跨境电商
经验交流分享

PHP预定义变量$GLOBALS以及与global的区别

$GLOBALS — References all variables available in global scope,引用全局作用域中可用的全部变量。一个包含了全部变量的全局组合数组。变量的名字就是数组的键。“Superglobal”也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable来访问它。与所有其他超全局变量不同,$GLOBALS在PHP中总是可用的。

[PHP]

function test() {
$foo = “local variable”;

echo ‘$foo in global scope: ‘ . $GLOBALS[“foo”] . “\n”;
echo ‘$foo in current scope: ‘ . $foo . “\n”;
}

$foo = “Example content”;
test();

[/PHP]

以上输出:
$foo in global scope: Example content
$foo in current scope: local variable

$GLOBALS与global之间的区别。

[PHP]

[/PHP]

这个例子完全说明白了$GLOBALS与global之间的区别。首先global在函数内部声明全局变量的时候,只是将外部变量的值传递到内部来使用。在外部没调用这个函数的时候,其在函数内部的计算操作,并不会影响到外部变量的值。当外部调用这个函数之后,函数内部的计算结果会影响外部的变量取值。上例中,如果外部没有$var2 = $var3 = 0赋值的话,在调用test_global()之后,print $var2的结果依然会是5。

[2011年3月19日12:32:21]今天再次研究了一下global的问题。在函数内部global的变量,并非不会影响外部变量。貌似是global是引用。而$GLOBALS[‘a’]则就是$a 本身。

而$GLOBALS则不一样,这可以用$GLOBALS手册上的定义来解释,引用全局作用域中可用的全部变量,变量的名字就是数组的键。注意,这里是引用,即在同一个脚本中,$GLOBALS[‘a’]和$a实际上指向的是同一个内存地址。

赞(0)
未经允许不得转载:锐想 » PHP预定义变量$GLOBALS以及与global的区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限