在PHP脚本中,我使用$GLOBALS['someName'] = someValue
在脚本开头定义了一个全局变量。然后,someFunction
使用此全局变量,稍后使用require
在脚本中加载该变量。如果我更正,我应该能够在脚本的开头设置$someName = someValue
,并在全局范围内提供$someName
。但是,当我执行此操作时,$someName
无法使用someFunction
。它仅在我使用$GLOBALS['someName']
时有效。为什么在PHP脚本开头定义时,$someName
不能作为全局变量工作?
答案 0 :(得分:2)
在函数外定义变量时,它在页面中是全局的,但在函数中不可访问。要使变量成为全局变量并在其他函数中使用,有两种方法:
您必须使用global
关键字。所以,只需在函数的开头写global $someName
,然后在函数中正常使用它们。
请勿将全局变量重新定义为global $someName
,而应将其直接用作$GLOBALS['someName']
。
转到this参考了解详情。
答案 1 :(得分:1)
好的,让我们给出一个恰当的例子:
我将在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']
访问全局。
但你真的不想这样做。请参阅why。