为什么不是';PHP中的t全局变量是否可以在require_once文件中运行?

为什么不是';PHP中的t全局变量是否可以在require_once文件中运行?,php,Php,在PHP脚本中,我在脚本开头使用$GLOBALS['someName']=someValue定义了一个全局变量。该全局变量随后由someFunction使用,该函数稍后将使用require加载到脚本中。如果我是正确的,我应该能够在脚本开头设置$someName=someValue,并使$someName全局可用。但是,当我这样做时,someName对someFunction不可用。它只在我使用$GLOBALS['someName']时起作用。为什么在PHP脚本开头定义时,$someName不能作

在PHP脚本中,我在脚本开头使用
$GLOBALS['someName']=someValue
定义了一个全局变量。该全局变量随后由
someFunction
使用,该函数稍后将使用
require
加载到脚本中。如果我是正确的,我应该能够在脚本开头设置
$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']
    访问全局数据库


    但你真的不想这么做。请参阅。

    您需要告诉PHP您希望在函数中使用全局变量,而不是创建局部变量。使用
    global$someName
    或像您那样使用
    $GLOBALS[“someName”]
    。提示:使用GLOBALS而不是使用$\u SESSION或$\u COOKIES是非常糟糕的做法。即使$\u SESSION也更好、更安全……像$\u SESSION['someName'],当您提出这样的问题时,您需要提供源代码。帮助你要比阅读叙述容易得多。