1

global $user对比$user = $GLOBALS['user']

通过使用“global $var”来获取全局变量,我们是获取全局变量的副本还是获取对该全局变量的引用?

global $user;

$user 是全局对象的副本还是对实际全局变量的引用?

谢谢。

4

4 回答 4

2

通过使用global $var名为“var”的全局变量,将被导入函数的局部范围(这是通过创建引用来完成的)。

这与$GLOBALS哪个是超全局变量不同。无论范围如何,这总是无处不在。

但是,这与引用不同。如果您真的想了解变量以及如何引用变量,我建议您阅读 Derick Rethans 的 PDF:PHP 中的参考:深入了解(PDF)。

于 2012-06-09T18:17:37.553 回答
2

通过使用它,global $var;您总是有一个引用全局变量的局部变量。

以下代码:

$var = 1;

function test() {
  global $var;

  $var++;
}

test();
echo $var;

相当于:

$var = 1;

function test() {
  $GLOBALS['var']++;
}

test();
echo $var;
于 2012-06-09T18:06:48.917 回答
0

引用$GLOBALS 的文档

一个关联数组,包含对当前在脚本全局范围内定义的所有变量的引用。变量名是数组的键。

一个简单的测试用例:

$foo = "foo";
echo $GLOBALS["foo"];         // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo;                    // bar
于 2012-06-09T18:08:46.473 回答
0

两者都不。编译器将该变量名称的使用解析为全局范围内的相应变量。

于 2012-06-09T18:12:25.140 回答