我们可以通过引用call_user_func_array()来传递参数数组,而不是传递变量引用的数组吗


Can we pass the parameter array by reference to call_user_func_array() instead of passing an array of variable references?

我已经研究过是否可以使用call_user_func_array()通过引用传递参数?,和http://php.net/manual/en/function.call-user-func-array.php.使用call_user_func_array()通过引用传递的技术似乎是将参数数组作为变量引用的数组。例如,设置$parameters = array( &$some_variable)。我的问题是,我们是否可以将参数数组作为变量数组(而不是引用),并将整个参数数组作为引用传递?如下所示:

function toBeCalled( &$parameter1, $parameter2 ) {
    //...Do Something...
}
$changingVar = 'passThis';
$changingVar2 = 'passThisToo';
$parameters = array( $changingVar, $changingVar2 );
call_user_func_array( 'toBeCalled', &$parameters );

请注意,函数toBeCalled期望第一个变量作为引用,第二个变量作为值。我之所以这么问,是因为这里的语法很方便,而且它似乎可以工作(请参阅Drupal的DruTex模块的PHP 5.3补丁-http://drupal.org/node/730940#comment-4054054),但我只是在检查专家们对它的看法。

你不能,因为当你把东西放进一个数组而不是引用的时候,它们就会被复制。因此,无论以后对数组做什么,它都不会影响您放入的原始变量(如果它们甚至是一开始的变量)。

你链接到的东西似乎不相关。它通过引用删除了一个毫无意义的调用时间传递。