0

我有一个接受可变数量参数的函数,我必须通过引用将它们传递给另一个函数。

function my_function($arg0, $arg1, $arg2, ...)
{
    my_other_function(&$arg0, &$arg1, &$arg2, ...); 
}

这样当我通过引用传递事物时my_functionmy_other_function也会通过引用获取它们。

有没有办法做到这一点?

4

2 回答 2

3

我想知道你为什么需要这个。一般来说,PHP 中的引用很糟糕

如果你真的想这样做,唯一正确的方法(忽略调用时传递引用黑客,无论如何它不再适用于 PHP 5.4)是使用包装参数的数组:

function myfunc(array $data) {
    $data[0] += 42;
    /* ... */
}

$var = 0;
myfunc(array(&$var /*, ... */));
echo $var; // prints 42

为了传递给另一个函数,您可以使用call_user_func_array()

于 2012-07-21T21:13:20.313 回答
1

从技术上讲,您没有这样做:

function my_function($arg0, $arg1, $arg2, ...)
{
    my_other_function(&$arg0, &$arg1, &$arg2, ...); 
}

但是这个:

function my_function(&$arg0, &$arg1, &$arg2, ...)
{
    my_other_function($arg0, $arg1, $arg2, ...); 
}

然而,正如@johannes已经写的那样,对于 PHP 中引用的可变数量的参数没有很好的支持(谁知道更好)。func_get_args例如,文档不适用于引用。

而是利用该建议通过数组参数传递所有引用。这样可行。

function my_function(array $args)
{
    my_other_function($args); 
}
于 2012-07-21T21:30:45.300 回答