global 与 $GLOBALS 的区别
程序员文章站
2024-01-21 22:58:46
...
global 与 $GLOBALS 的区别
global的测试结果
global $variable;
$variable= 1;
function test(){
global $variable;
unset($variable);
echo $variable.'<br />';
}
test();
echo $variable.'<br />';
浏览器结果:
Notice: Undefined variable: variable in D:\wnmp\nginx\www\test.php on line 18
1
上述结果可以看出,global可以在函数内引用,函数内对global出的更改不会影响外部的全局变量
下面是$GLOBALS的测试结果:
代码:
$GLOBALS['variable'] = 1;
echo $GLOBALS['variable'];
function test(){
unset($GLOBALS['variable']);
echo $GLOBALS['variable'];
}
test();
echo $GLOBALS['variable'];
结果:
1
Notice: Undefined index: variable in D:\wnmp\nginx\www\test.php on line 26
Notice: Undefined index: variable in D:\wnmp\nginx\www\test.php on line 29
第一个变量输出了结果1,函数内和执行函数之后的全局变量都有不存在变量的Notice提示,说明函数内的更改对外面的的全局变量有影响。
结论
global只是对全局变量做一个引用,函数内的更改只对本函数内的全局变量有影响,而$GLOBALS指向变量本身,函数的更改对外部的全局变量也有影响