私はこれを読んでいました: 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
*/
フォローしてきた場合、これは完全に理にかなっているはずです。$foo が作成され、$bar で識別される ZVal の場所を指します。$bar が作成されると、$foo が指されたのと同じ場所を指します。もちろん、その場所は null です。$foo が再割り当てされると、変更されるのは ZVal $foo が指している場所だけです。最初に $foo に別の値を割り当てた場合でも、$bar はその値を保持します。
私は C でプログラミングすることを学びました。PHP は異なり、参照としてメモリ位置の代わりに ZVals を使用することを理解しています。しかし、このコードを実行すると:
$foo = &$bar;
$bar = &$foo;
2 つの ZVal があるように私には思えます。C では、2 つのメモリ ロケーションが存在します (値は反対のメモリ ロケーションになります)。
誰か説明できますか?