PHP赋值运算符的作用是什么


What does PHP assignment operator do?

我碰巧读到了这个http://code.google.com/speed/articles/optimizing-php.html

它声称这个代码

$description = strip_tags($_POST['description']);
echo $description;

应按照以下进行优化

echo strip_tags($_POST['description']);

然而,在我的理解中,PHP中的赋值操作不一定是在内存中创建副本。

这在内存中只有一个"abc"的副本。

$a = $b = "abc";

只有当一个变量发生变化时,它才会消耗更多内存。

$a = $b = "abc";
$a = "xyz";

这是正确的吗?

应按照以下进行优化

如果你不需要存储它,这只是一个好主意,从而避免不必要的内存消耗。但是,如果以后需要再次输出相同的内容,最好将其存储在变量中,以避免另一个函数调用。

这是正确的吗?

是的。它被称为书面复制。

在第一个例子中,如果变量只使用一次,那么首先就没有创建变量的意义,只需立即返回语句结果,就不需要该变量。

在第二个例子中,PHP有一种叫做写时复制的东西。这意味着,如果你有两个变量指向同一个东西,它们都只是指向同一块内存。也就是说,直到其中一个变量被写入,然后创建一个副本,并对该副本进行更改。

作者的观点是,将数据复制到变量中将将数据保存在内存中,直到变量为unset。如果以后不再需要这些数据,那确实是浪费了内存。

否则,这两种方法在峰值内存消耗方面根本没有区别,所以他的推理("复制")是错误的。