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

时间:2012-01-14 18:10:06

标签: php parameter-passing pass-by-reference

我查看了Is it possible to pass parameters by reference using 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),但我只是查看专家对它的看法。 / p>

1 个答案:

答案 0 :(得分:0)

你不能,因为当你把东西放入数组而不是通过引用时,它们就被复制了。所以不管你以后对数组做了什么,它都不会影响你输入的原始变量(如果它们甚至是变量,那么就开始)。

您链接的内容似乎并不相关。它正在消除无谓的呼叫时间传递。