PHP赋值运算符有什么作用?

时间:2011-06-04 03:39:34

标签: php memory

我恰好阅读了这个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";

这是对的吗?

3 个答案:

答案 0 :(得分:5)

  

应优化如下

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

  

这是对的吗?

是。它叫做copy-on-write。

答案 1 :(得分:1)

在第一个例子中,如果变量只使用一次,那么首先没有点变量,只需立即回显语句结果,就不需要变量。

在第二个例子中,PHP有一个名为copy on write的东西。这意味着如果你有两个指向同一个东西的变量,它们都只是指向相同的内存位。也就是说,直到写入其中一个变量,然后复制,然后对该副本进行更改。

答案 2 :(得分:1)

作者确实有一点,因为将数据复制到变量中将该数据保存在内存中,直到变量为unset。如果您以后不再需要数据,那确实会浪费内存。

否则两种方法之间的峰值内存消耗完全没有区别,因此他的推理(“复制”)是错误的。

相关问题