您的位置:首页 > 编程语言 > PHP开发

PHP里global与$GLOBALS['']的区别

2014-12-23 11:34 579 查看
根据官方的解释是

$GLOBALS['var'] 是外部的全局变量$var本身。

global $var 是外部$var的同名引用,即这两个变量指向同一个值。

<?php
$var1 = 1;
$var2 = 2;
function test() {
$GLOBALS['var2'] = &$GLOBALS['var1'];
}

test();
echo $var2;
?>


打印结果为1

<?php
$var1 = 1;
$var2 = 2;
function test(){
global $var1, $var2;
$var2 = &$var1;
echo $var2;
$var2 = 'snsgou.com';
}

test(); // 输出 1
echo $var2; // 输出 2
echo $var1; // 输出 snsgou.com
?>


test()函数中的$var1,$va2都是局部变量,只不过是加了global关键字后,分别引用指向全局变量$var1,$va2;

$var2
= &
$var1
;是将global var2里存入global var1的地址,而不影响全局变量var1里存的地址。
当 $var2 = &$var1; 时,局部变量$var2不再指向全局变量$val2,而重新指向全局变量$var1,换句话来说,局部变量$var2的改变,不会再影响到全局变量$val2,而会影响到重新指向的全局变量$val1

<?php
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>


因为$var1被删除了,所以什么东西都没有打印。

<?php
$var1 = 1;

function test(){
global $var1;
unset($var1);
}

test();
echo $var1;
?>


打印了1。因为只是把引用变量global var1给删除了,不影响全局变量var1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: