以前的模式曾经可以在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)
将处理传递引用的情况,但会破坏原始函数的双重用途性质,因为不再可能传递值.
有没有办法解决?
我认为这与你得到的一样接近:
function foo(&$bar) { ... }
foo($array); // call by reference
$bar = foo($_tmp = $array); // call by value
Run Code Online (Sandbox Code Playgroud)
不幸的是,每次通话都需要进行一些更改.