Php 我们是否可以通过引用传递参数数组来调用_user_func_array(),而不是传递变量引用数组?

Php 我们是否可以通过引用传递参数数组来调用_user_func_array(),而不是传递变量引用数组?,php,parameter-passing,pass-by-reference,Php,Parameter Passing,Pass By Reference,我已经看过了,还有。使用call_user_func_array()通过引用传递的认可技术似乎是将参数数组设置为变量引用数组。例如,设置$parameters=array(&$some\u变量)。我的问题是,我们是否可以将参数数组改为变量数组(不是引用),并将整个参数数组作为引用传递?这说明如下: function toBeCalled( &$parameter1, $parameter2 ) { //...Do Something... } $changingVar = 'p

我已经看过了,还有。使用call_user_func_array()通过引用传递的认可技术似乎是将参数数组设置为变量引用数组。例如,设置
$parameters=array(&$some\u变量)
。我的问题是,我们是否可以将参数数组改为变量数组(不是引用),并将整个参数数组作为引用传递?这说明如下:

function toBeCalled( &$parameter1, $parameter2 ) {
    //...Do Something...
}

$changingVar = 'passThis';
$changingVar2 = 'passThisToo';
$parameters = array( $changingVar, $changingVar2 );
call_user_func_array( 'toBeCalled', &$parameters );

请注意,要调用的函数期望第一个变量作为引用,第二个变量作为值。我之所以问这个问题,是因为这里的语法很方便,而且似乎很有效(请参阅Drupal的DruTex模块的PHP 5.3修补程序-),但我只是想看看专家们是怎么想的。

你不能,因为当你把东西放入数组而不是引用时,它们就被复制了。因此,无论以后如何处理数组,它都不会影响您输入的原始变量(如果它们甚至是开始时的变量)


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

使用第一个版本,因为它可以工作。后者甚至不适用于PHP5.3(或者您的示例是否适用于您?),无论如何PHP5.4都不允许使用后者(Zend memleaks用于强制传递引用)。感谢@newacct,您关于复制到数组中的内容的观点有助于明确为什么call_user_func_数组需要具有引用元素(乍一看似乎违反了按引用传递调用时间的限制)。测试后:
返回错误。