Насколько мне известно, любая переменная, объявленная вне функции, рассматривается в PHP как «глобальная переменная».
Чтобы получить доступ к такой глобальной переменной внутри функции, есть два способа: объявить ее как глобальную внутри функции с помощью ключевого слова «global». Другой способ - получить доступ к глобальной переменной как к индексу суперглобальной переменной как $GLOBALS['global variable']
.
Оба вышеупомянутых способа делают одно и то же, и оба действительны.
Но в следующих двух программах это предположение кажется ошибочным, поскольку обе программы генерируют разные выходные данные. Я хочу развеять это сомнение, верно ли это предположение на 100% или оно иногда работает, а иногда нет.
Пожалуйста, просмотрите следующие фрагменты кода и их соответствующие результаты:
Фрагмент кода 1:
<?php
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Вывод фрагмента кода 1:
bar
Фрагмент кода 2:
<?php
function destroy_foo() {
unset($GLOBALS['foo']);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Вывод фрагмента кода 2:
Примечание: неопределенная переменная: foo в hello.php в строке 9