PHP $GLOBALS变量和global关键字

$GLOBALS[‘var’]是外部的全局变量本身;global $var是外部$var的同名引用或者指针。

0x00 代码演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$var1 = 1;
function test1(){
unset($GLOBALS['var1']);
}
test1();
echo $var1;

$var2 = 2;
function test2(){
global $var2;
unset($var2);
}
test2();
echo $var2;

0x01 结论

上述代码最终的打印结果只打印了“2”。test1中unset了$var1,因此外部也访问不到,而test2中unset的只是$var2的同名引用,所以外部的变量还存在,这说明了$GLOBALS变量和global关键字两者的机制还是不同的。

0%