global申明的一些误区

function test() {
global $a;
unset($a);
}
$a = 1;
test();
echo $a; //1
明明是unset了呀,为什么还会打印出来呢?
因为在函数里面的变量只是私有的,unset的确是起到了作用,但它也仅仅是unset了一个global 的值;因为在函数内部,global申明一个变量只是产生了一个指向函数外部变量的别名变量(仅仅只是映射)而已,而不是真正的函数外部变量;$GLOBALS[]才调用是外部的变量,函数内外才会始终保持一致!

猜你喜欢

转载自www.cnblogs.com/tongchen/p/11254258.html