以下模式过去在PHP中是可能的:
function foo($arr)
{
// modify $arr in some way
return $arr;
}然后可以使用按值传递来调用:
$arr = array(1, 2, 3);
$newarr = foo($arr);或按引用传递:
$arr = array(1, 2, 3);
foo(&$arr);但是"Call-time pass-by-reference已弃用“。修改函数签名:
function foo(&$arr)将处理按引用传递的情况,但将打破原始函数的双重用途,因为不再可能按值传递。
有什么办法可以解决这个问题吗?
发布于 2011-05-26 21:11:13
我认为这是你能得到的最接近的结果:
function foo(&$bar) { ... }
foo($array); // call by reference
$bar = foo($_tmp = $array); // call by value不幸的是,它需要对每个调用进行一些更改。
发布于 2011-05-26 20:29:44
双重用途的本质是愚蠢的,这就是为什么这种行为被否决的原因。按照您的建议修改函数签名。
发布于 2011-05-26 20:29:46
可悲的是,我不相信有一个方法可以绕过它。
只要让你的函数使用带有&的引用即可。
https://stackoverflow.com/questions/6138454
复制相似问题