$GLOBALS是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。
php语法中,很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然
根据官方的解释是
1. $GLOBALS['var']是外部的全局变量本身
2. global $var是外部$var的同名引用或者指针。
举例说明一下:
<?php$var1 = 1;$var2 = 2;function test(){$GLOBALS['var2′] = &$GLOBALS['var1′];}test();echo $var2;?>
正常打印结果为1
<?php$var1 = 1;$var2 = 2;function test(){global $var1,$var2;$var2 = &$var1;}test();echo $var2;?>
意外打印结果为2
为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。
我们再来看一个例子吧。
<?php$var1 = 1;function test(){unset($GLOBALS['var1']);}test();echo $var1;?>
点击阅读全文
更多参考:
变量范围
PHP: extract 将数组array的key变为变量 ( extract函数的定义和用法 )
HP7革新与性能优化
JQuery: 使用Ajax赋值给全局变量失败异常的解决方法,ajaxSetup, jquery ajax global
本文转自:PHP: 关键字global 和 超全局变量$GLOBALS的用法、解释、区别