запустите следующий код:
<?php
$a = array('yes');
$a[] = $a;
var_dump($a);
выход:
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);
выход:
array(2) {
[0]=>
string(3) "yes"[1]=>
array(2) {
[0]=>
string(3) "yes"[1]=>
*RECURSION*
}
}
Я переназначил значение $ a, почему есть RECURSION циркулярные ссылки?
Для удаления ссылки необходимо позвонить unset
, Без unset
после $a = array('yes');
$a
все еще связан с $b
и они до сих пор ссылки. Таким образом, вторая часть имеет то же поведение, что и первая.
Обратите внимание, однако, что ссылки внутри массивов потенциально
опасно. Выполнение нормального (не по ссылке) назначения с
ссылка на правую сторону не превращает левую сторону в
ссылка, но ссылки внутри массивов сохраняются в этих нормальных
задания.
Других решений пока нет …