PHP全局变量global与$GLOBALS的区别和使用

admin2023-01-181438

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。


网友评论