Головоломка с переменной PHP

запустите следующий код:

<?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 циркулярные ссылки?

6

Решение

Для удаления ссылки необходимо позвонить unset, Без unset после $a = array('yes'); $a все еще связан с $b и они до сих пор ссылки. Таким образом, вторая часть имеет то же поведение, что и первая.

Обратите внимание, однако, что ссылки внутри массивов потенциально
опасно. Выполнение нормального (не по ссылке) назначения с
ссылка на правую сторону не превращает левую сторону в
ссылка, но ссылки внутри массивов сохраняются в этих нормальных
задания.

http://php.net/manual/en/language.references.whatdo.php

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]