如何在php中通过引用传递无限参数

bzz*_*zzb 14 php variables arguments function pass-by-reference

我有php函数,它具有无限数量的args,我从func_get_args()获得.我有一些带参数的操作(改变字符串或做某事),我希望它像引用的传递参数.可能吗?

例:

$test = 'foo';
$test2 = 'bar';

function test(){
    $args = func_get_args();
    foreach($args as $arg)
        $arg .= 'baz';
}

test($test, $test2);
Run Code Online (Sandbox Code Playgroud)

Mar*_*sch 15

从PHP-5.6开始,您可以使用可变参考:

function test(&...$args) {
    foreach ($args as &$arg) {
        $arg .= 'baz';
    }
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*her 12

正如在PHP中所回答的那样:通过引用可变长度参数列表?,PHP中没有办法将变长和传递引用函数参数组合在一起.相反,链接的答案使用声明100 &argx秒的黑客,然后get_num_args()用来计算实际使用了多少.恭喜,你在PHP中发现了一个特别困难的角落;)


els*_*ooo 5

我非常怀疑这是可能的,但我确实知道一种方法可以得到你想要的东西:

function test(&$args) {
    foreach ($args as $arg) {
        $arg .= 'baz';
    }
}

test(array(&$test, &$test2));
Run Code Online (Sandbox Code Playgroud)