PHP全局变量global与$GLOBALS的区别和使用
PHP超全局变量如下:
$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。
global与$GLOBALS的区别
$GLOBALS
1、项目中可以自定义全局变量,所有的全局变量默认会一起组成一个数组,$GLOBALS就是这个数组的变量名,而那些全局变量的名字就是该数组的键。
2、$GLOBALS在项目的任何地方都可以直接使用。
global
1、在函数内产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,该变量变化不会影响外部变量。
2、global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
例一:global和$GLOBALS区别。
function t1() {
global $var1, $var2;
$var2 = &$var1;
}
function t2() {
$GLOBALS['var3'] = $GLOBALS['var1'];
}
$var1 = 5;
$var2 = $var3 = 0;
t1();
print $var2 ."\n";
t2();
print $var3 ."\n";输出:0 5
t1()内的global变量改变不会影响外面的而$GLOBALS会。
例二:global定义全局变量。
function test_global() {
global $var1;
$var1 = 'ok';
unset($var1);
}
test_global();
$var2 = &$var1;
unset($var1);
echo $var2;输出:ok
可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,所以我们在外面依然可以访问$var1。
例三:$GLOBALS在函数内部访问函数外面定义的变量。
$waibu = 'out';
function ff() {
echo $GLOBALS['waibu'];
}
ff();$waibu = 'out';
function ff() {
global $waibu;
echo $waibu;
}
ff();上面两种结果一样,都输出out。
