PHP 中的全局与$GLOBALS


global vs $GLOBALS in php

我知道最好使用引用传递而不是这样做,但我想知道为什么这段代码(代码 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数组。

此外,您甚至应该首先避免考虑全局变量。