php中很长用全局变量global,还有一个超级全局变量$GLOBALS[]。这两个全局变量又有什么区别呢?
下面我们用一段代码来解释这两个全局变量的区别吧!
$a = 0;
$b = 0;
function quanju(){
global $a;
echo $a;
}
function chaoquanju(){
echo $global[$a];
}
quanju();
chaoquanju();
?>
这两个结果都可以输出结果0,很好,表示这个变量在函数内都执行了,看起来没有什么区别嘛。
下面我们再来看那些区别吧
$a = 0;
$b = 0;
function zonghe(){
$c = 0;
global $a;
$a = $c;
$GLOBALS[$b] = $c;
$c = '3';
echo "a=".$a." b=".$b;
}
zonghe();
?>
输出结果之后看到了什么?显示的是a=3 b=0,这是什么情况?
其实就是因为$a的引用指向了$c的引用地址。导致实质的值没有改变。这时候只是指向$a的指针指向了$c的指针,只是指针指向变了一下,但是实质上根本就没有改变$b的值,因此$b的值仍旧不会变化)。
$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致!
如果还对这两个关系不够清晰,在以后的文章中将会细细讲解!
转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » php中global和$GLOBALS[]的分析