У кого-нибудь есть объяснение этому странному поведению 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;
В PHP, когда вы сбрасываете переменную, на которую ссылается другая переменная (это то, что происходит в вашем случае), она просто разрывает ссылку, соединяющую эти переменные, но остается значением во второй переменной.
$ mainVar = «Привет!»;
$ connectedVar = &$ MainVar;
снята с охраны ($ mainVar);
Так что даже после $mainVar
не установлен, $linkedVar
сохраняет это значение.
Других решений пока нет …