PHP удаляет "ссылку" из переменной.
У меня есть ниже код. Я хочу изменить $b, чтобы использовать его снова со значениями. Если я это сделаю, это также изменит $a. Как я могу назначить значение $b снова после того, как ранее назначил его в качестве ссылки на $a?
$a = 1;
$b = &$a;
// later
$b = null;
4 ответов
см. объяснение inline
$a = 1;$b = &$a; теперь $b и $a становятся одной переменной с двумя разными именамиunset($b); $B имя исчезло, исчезло из контекста, но $a все еще доступен$b = 2; Теперь $b похож на новую переменную с новым значением. Начать новую жизнь.
ответ @xdazz правильный, но просто добавить следующий отличный пример из руководство по PHP что дает представление о том, что PHP делает под капотом.
в этом примере вы можете увидеть, что $bar внутри функции foo () является статической ссылкой на переменную области действия функции.
уничтожение $bar удаляет ссылку, но не освобождает память:
<?php
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar\n";
}
foo();
foo();
foo();
?>
приведенный выше пример выведет:
Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23
прежде всего: создание ссылки из $a to $b создать подключение (за неимением лучшего слова) между двумя переменными, так $a изменение когда $b изменения-это именно то, как он должен работать.
Итак, предполагая, что вы хотите сломать ссылку, самый простой способ ist
unset($b);
$b="new value";