PHP / Сборка мусора, сброс переменной

У кого-нибудь есть объяснение этому странному поведению php?
По сути, я сделал переменную $ число, а затем сделал переменную $num2, который является ссылкой на $number, Поэтому я подумал, что они оба будут использовать одну и ту же область памяти.

Но когда я сброшен $number, он все еще выводит .., я подумал, что если бы я использовал некоторые команды gc, это очистило бы его, потому что это похоже на поведение кучи. Но это все еще не работает. :П

function sum(&$var) {
$var++;
}
$number = 5;
$num2 = &$number;
sum($number);
echo $number; echo '<br>';
gc_enable();
gc_collect_cycles();
sleep(5);
unset($number);
echo $num2;

1

Решение

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

это описано в PHP документах.

$ mainVar = «Привет!»;
$ connectedVar = &$ MainVar;
снята с охраны ($ mainVar);

Так что даже после $mainVar не установлен, $linkedVar сохраняет это значение.

0

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

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

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