对字符串文字的所有引用是否都引用相同的实例?

时间:2013-09-10 08:16:29

标签: php string

我的一位同事发了一个帖子,上面写着这样的话:

在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允许这样做。有人可以澄清这是否属实

1 个答案:

答案 0 :(得分:2)

您指的是一个名为String interning的概念。它似乎是从版本5.4开始在Zend引擎中实现的:“我们的实现使编译时已知的字符串得以实现。” Source