PHP5使用“写入时复制”并通过引用传递导致更多的性能损失而不是增益,为什么我应该使用pass-by-reference?除了回调函数之外,它将返回多个值或类的属性,你想要在不调用set函数的情况下进行改变(不好的做法,我知道),是否有一个我失踪的用途?
答案 0 :(得分:3)
当您想要修改结果时,您可以使用pass-by-reference。这就是它的全部内容。
请记住,在PHP对象中始终传递引用。
就个人而言,我发现PHP的隐式复制值系统(我想防止意外修改)繁琐且不直观但后来我又开始使用强类型语言,这可能解释了这一点。但我觉得有趣的是,对象与PHP的正常操作不同,我认为PHP的隐式复制机制确实不是一个好的系统。
答案 1 :(得分:2)
填充数组的递归函数?记得写一次这样的东西。
部分填充阵列的数百份副本以及每一次复制,拼接和连接部件都没有意义。
答案 2 :(得分:0)
即使传递物体也存在差异。
试试这个例子:
class Penguin { }
$a = new Penguin();
function one($a)
{
$a = null;
}
function two(&$a)
{
$a = null;
}
var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);
结果将是:
object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL
当您通过引用传递包含对象引用的变量时,您可以修改对该对象的引用。