【发布时间】:2012-12-18 16:44:24
【问题描述】:
我在读这个:http://www.dereleased.com/2011/04/27/the-importance-of-zvals-and-circular-references/
还有一个例子让我有点失落。
$foo = &$bar;
$bar = &$foo;
$baz = 'baz';
$foo = &$baz;
var_dump($foo, $bar);
/*
string(3) "baz"
NULL
*/
如果您一直在关注,这应该很有意义。 $富 被创建,并指向由 $bar 标识的 ZVal 位置;什么时候 $bar 被创建,它指向 $foo 被指向的同一个地方。那 当然,位置是空的。当 $foo 被重新分配时,唯一的 变化是 ZVal $foo 指向的;如果我们分配了一个 首先与 $foo 不同的值,然后 $bar 仍然会保留它 价值。
我学会了用 C 编程。我知道 PHP 是不同的,它使用 ZVals 而不是内存位置作为引用。但是当你运行这段代码时:
$foo = &$bar;
$bar = &$foo;
在我看来会有两个 ZVals。在 C 中会有两个内存位置(并且值将位于相反的内存位置)。
谁能解释一下?
【问题讨论】:
标签: php