很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。
1. $GLOBAL['var'] 是外部全局变量本身
2. global $var 是外部变量$var的同名引用或者指针
看几个实例
<?php
//设置编码格式
header("Content-type:text/html;charset=utf-8");
//设置时间时区
date_default_timezone_set("PRC");
$var1 = 1;
$var2 = 2;
function test() {
$GLOBALS['var2'] = &$GLOBALS['var1'];
}
test();
echo $var2;
结果打印值为2
<?php
//设置编码格式
header("Content-type:text/html;charset=utf-8");
//设置时间时区
date_default_timezone_set("PRC");
$var1 = 1;
$var2 = 2;
function test() {
global $var2; // 相当于global $var2 = &$GLOBAL['var2'];
$var2 = 3;
}
test();
echo $var2;
结果打印值为3
<?php
//设置编码格式
header("Content-type:text/html;charset=utf-8");
//设置时间时区
date_default_timezone_set("PRC");
$var1 = 1;
$var2 = 2;
function test() {
global $var1,$var2;
$var2 = &$var1; //相当于 $var2 = &GLOBAL['var1'];
$var2 = 4;
}
test();
echo $var2; //此处打印结果为2
echo $var1; //此处打印结果为4
到这里应该明白了吧。