全局变量 global和$GLOBALS[]的区别

global在函数内产生一个指向函数外部变量的别名变量(指向外部变量的引用),而不是真正的函数外部变量

$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致!

function test_global() {
     global  $var1$var2// var1,var2保存的是外部同名变量的引用
     $var2 =&  $var1;
}
function test_globals() {
     $GLOBALS['var3'] =&  $GLOBALS['var1']; // 操作的是实际的变量
}

$var1 = 5;
$var2 =  $var3 = 0;
test_global();
echo  $var2;
echo "\n";
test_globals();
echo  $var3;
// 结果为 0 5

 

例子2:

function test_1() {
     global  $var1// 相当于在外边创建了一个同名变量,而这个变量是外边变量的引用
     $var1=2;
     unset( $var1);  // 只是取消了到外边变量的引用
}

function test_2() {
     $GLOBALS['var1'] =3;  // 在外边创建$var1变量,此时操作的就是外部的变量
    //unset($GLOBALS['var1']); //删除外边变量

}

$var1 = 1;
test_1();
print  $var1;
echo "\n";
test_2();
print  $var1;

 

 

#这两种方式都可以改变 全局变量 $g 的值
$g = 123;
function test()
{
//     global $g; $g = 456;
//     $GLOBALS['g'] = 456;    
}
test();
echo $g; #456

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值