PHP数组和传递引用

Bob*_*ack 10 php

以前的模式曾经可以在PHP中使用:

function foo($arr)
{
    // modify $arr in some way
    return $arr;
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用pass-by-value调用它:

$arr = array(1, 2, 3);
$newarr = foo($arr);
Run Code Online (Sandbox Code Playgroud)

或通过引用传递:

$arr = array(1, 2, 3);
foo(&$arr);
Run Code Online (Sandbox Code Playgroud)

但"已弃用"呼叫时间传递参考".修改功能签名:

function foo(&$arr)
Run Code Online (Sandbox Code Playgroud)

将处理传递引用的情况,但会破坏原始函数的双重用途性质,因为不再可能传递值.

有没有办法解决?

Mat*_*hew 5

我认为这与你得到的一样接近:

function foo(&$bar) { ... }

foo($array);                // call by reference
$bar = foo($_tmp = $array); // call by value
Run Code Online (Sandbox Code Playgroud)

不幸的是,每次通话都需要进行一些更改.