0

PHP5 使用“写入时复制”并通过引用传递导致性能损失大于增益,为什么我应该使用传递引用?除了会返回多个值的回调函数或您希望在以后不调用 set 函数的情况下更改属性的类(我知道这是不好的做法)之外,我还缺少它的用途吗?

4

3 回答 3

3

当您想要修改结果时,您可以使用传递引用,这就是它的全部内容。

还要记住,在 PHP 中对象总是通过引用传递。

就我个人而言,我发现 PHP 隐式复制值的系统(我想是为了防止意外修改)既麻烦又不直观,但我又开始使用强类型语言,这可能解释了这一点。但我发现对象与 PHP 的正常操作不同,这很有趣,我认为 PHP 的隐式复制机制确实不是一个好的系统。

于 2009-05-20T00:07:35.720 回答
2

填充数组的递归函数?记得写一次这样的东西。

拥有数百个部分填充数组的副本并在每个转角处复制、拼接和连接部件是没有意义的。

于 2009-05-20T00:35:47.973 回答
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

当您通过引用传递包含对对象的引用的变量时,您可以修改对该对象的引用。

于 2009-05-21T19:51:10.953 回答