在 PHP 脚本中,我使用 $GLOBALS['someName'] = someValue
在脚本开头定义一个全局变量。 然后,此全局变量由稍后使用 require
在脚本中加载的someFunction
使用。 如果我是对的,我应该能够在脚本的开头设置$someName = someValue
,并在全球范围内提供$someName
。 但是,当我这样做时,$someName
someFunction
无法使用. 它仅在我使用$GLOBALS['someName']
时才有效。 为什么在 PHP 脚本的开头定义时$someName
不能作为全局变量工作?
当您在函数外部定义变量时,该变量在页面中是全局的,但在函数中不可访问。要使变量全局化并在其他函数中使用,有两种方法:
-
您必须使用
global
关键字。因此,只需在函数的开头编写global $someName
,然后在函数中正常使用它们。 -
不要将全局变量重定义为
global $someName
,而是直接将它们用作$GLOBALS['someName']
。
有关详细信息,请转到此参考。
好吧,
让我们举一个合适的例子:
我将在 PHP 中打开一个交互式终端来演示访问全局。
Interactive mode enabled
php > $myvar = "yves";
php > function testing() { echo $myvar; }; testing();
PHP Notice: Undefined variable: myvar in php shell code on line 1
php > function testing_with_global() { global $myvar; echo $myvar; }
php > testing_with_global();
yves
php >
或者,您可以使用 $GLOBALS['myvar']
访问全局。
但你真的不想这样做。看看为什么。