GLOBALS和GLOBAL之间有什么区别?

8

在PHP中,我想知道GLOBAL和GLOBALS之间的区别。

一些例子:

print_r($GLOBALS);

$GLOBALS 是一个数组,global 是 PHP 的关键字。它们本质上做的是相同的事情,但方式不同。 - Pekka
为什么我们不能使用$GLOBAL访问会话和Cookie变量?我可以使用$GLOBAL访问我创建的变量。 - balaphp
3
因为这不是$GLOBALS的作用。$GLOBALS是用于全局作用域中定义的变量,不多也不少。这就是事实。 - Pekka
5个回答

15
这是两个与同一全局变量相关的不同事物。

$GLOBALS - PHP 超级全局变量数组,用作表示全局变量表并以数组形式访问。由于它是超级全局变量,所以随处可用。

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

global - 导入特定全局变量到本地变量表的关键字。


然后你问:

但是为什么我们无法使用$GLOBALS访问会话和cookie变量?

那是错误的,您可以使用$GLOBALS访问会话和cookie变量:

$GLOBALS['_SESSION']['session_variable_name']

不过$_SESSION也是一个superglobal,所以你无需使用$GLOBALSglobal就可以从任何地方访问会话变量:

$_SESSION['session_variable_name']

对于$_COOKIE同样适用。


6
它们是两个不同的东西。 global 是一个关键字,它表示变量来自全局作用域。例如,如果您要访问在函数外定义的变量,则需要使用 global 关键字使其在函数中可访问。 $GLOBALS 是一个超级全局数组。超级全局意味着它在脚本的所有作用域中都可用,无需使用 global 关键字。

2

$GLOBALS是一个数组,global是一个关键字,用于声明或使用全局变量。


1

我认为你的困惑在于$GLOBAL和$GLOBALS之间。

$GLOBALS是一个超全局数组,在脚本的所有范围内都可以使用,无需使用global关键字。

你试图使用$GLOBAL访问会话和cookie变量,这是错误的。请改用$GLOBALS。$GLOBAL什么也不是。

但是global是一个关键字,它告诉变量来自全局作用域。


1
$GLOBALS:一个关联数组,包含对脚本全局作用域中当前定义的所有变量的引用。变量名是数组的键。

GLOBAL/global 是设置变量为全局变量的关键字。

参考资料:

http://php.net/GLOBALS

http://php.net/global


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接