我的一位同事发了一个帖子,上面写着这样的话:
在PHP中,如果有两个变量引用相同的值,则它们是相同的实例。
$a="Mary";
$b="Mary";
$c="lamb"
他暗示$ a和$ b引用相同的实例(内存空间)。我无法忍受这个。我知道这在java中有点真实,但我不认为对于php来说是如此,因为在php字符串实际上并不是原则上不可变的,所以有一个实例是没有意义的
此外,他说,如果我们unset($a)
它只删除$ a的引用而不是实际值。
这是真的,但没有任何证据
我还尝试了以下代码并打印了$ a和$ b。如果他们共享同一个实例,$ b的值也会发生变化。
$a[2]=3;
echo "<br/>\$a: $a<br/>"; //He3lo
echo "<br/>\$b: $b<br/>";//Hello
我很想检查变量的内存空间,但我不认为php允许这样做。有人可以澄清这是否属实
答案 0 :(得分:2)
您指的是一个名为String interning的概念。它似乎是从版本5.4开始在Zend引擎中实现的:“我们的实现使编译时已知的字符串得以实现。” Source