Я знаю, что лучше использовать передачу по ссылке, а не делать это, но мне интересно, почему этот код (Код 1) работает нормально, а другой (Код 2) — нет?
Код 1:
<?php
$var = 5;
function unset_var() {
unset($GLOBALS['var']);
}
unset_var();
echo $var; //Notice: Undefined variable: var
?>
Код 2:
<?php
$var = 5;
function unset_var() {
global $var;
unset($var); // trying to unset $var
}
unset_var();
echo $var; // 5
?>
Ваш второй код имеет функцию, которая создает новую переменную, и вы удаляете ее, а не ту, которая находится вне функции. Ваш первый код манипулирует только массивом $ GLOBALS.
Также вы должны избегать даже думать о глобальных переменных в первую очередь ….
Других решений пока нет …