运行以下代码:
<?php
$a = array('yes');
$a[] = $a;
var_dump($a);
out put:
array(2) {
[0]=>
string(3) "yes"
[1]=>
array(1) {
[0]=>
string(3) "yes"
}
}
运行以下代码:
<?php
$a = array('no');
$b = &$a;
$a[] = $b;
$a = array('yes');
$a[] = $a;
var_dump($a);
out put:
array(2) {
[0]=>
string(3) "yes"
[1]=>
array(2) {
[0]=>
string(3) "yes"
[1]=>
*RECURSION*
}
}
我已重新分配$ a的值,为什么有 RECURSION 循环引用?
答案 0 :(得分:3)
要删除参考,您需要致电unset
。在unset
$a = array('yes');
仍然与$a
绑定后,$b
没有{{1}},它们仍然是引用。所以第二部分与第一部分具有相同的行为。
但请注意,数组内部的引用是可能的 危险的。使用a执行正常(不是通过引用)赋值 右侧的参考不会将左侧变为a 引用,但数组内的引用保留在这些正常情况下 分配。