Есть ли у кого-нибудь объяснение этому странному поведению php? В принципе, я сделал переменную $ number, а сделал переменную $num2
, которая является ссылкой на $number
. Поэтому я думал, что оба они будут иметь одинаковое расположение памяти.PHP/сбор мусора, изменяющаяся переменная
Но когда я отключил $number
, его все еще выходы .., я подумал, что если я буду использовать некоторые команды gc, это очистит его, потому что это похоже на поведение кучи. Но он все еще не работает. : P
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.net] (http://php.net/manual/en/language.references.unset.php): «Когда вы отключите ссылку, вы просто нарушите привязку между именем переменной и содержимым переменной. Это не означает, что содержимое переменной будет уничтожено ». – showdev
В PHP нет «мест памяти» - нет указателей. ссылка SOMEWHAT как указатель на C-код, но не совсем то же самое, и ваше ожидаемое поведение для указателей не может быть применено к php-ссылкам. –
Эй, Марк, так что происходит, если нет мест в памяти? – jojo