глобальный против $ GLOBALS в переполнении стека

Я знаю, что лучше использовать передачу по ссылке, а не делать это, но мне интересно, почему этот код (Код 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
?>

2

Решение

Ваш второй код имеет функцию, которая создает новую переменную, и вы удаляете ее, а не ту, которая находится вне функции. Ваш первый код манипулирует только массивом $ GLOBALS.

Также вы должны избегать даже думать о глобальных переменных в первую очередь ….

2

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

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

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