PHP中的“全局”变量范围

时间:2009-11-09 16:35:49

标签: php scope global-variables

我有一段代码如下:

---- file.php ----

require_once("mylib.php");

function($a,$b)
{
    $r = $_GLOBALS['someGlobal'];
    echo $r;
}

---- mylib.php ----

$_GLOBALS['someGlobal'] = "Random String";

这有点夸大其词,但是我遇到的确切问题我没有找到一些相关的东西,但没有任何东西直接回答我的问题。

当我致电function($a,$b)时,没有任何回音,那就是 - $r是“空的”,好像没有分配给$_GLOBALS['someGlobal'];

此外,我尝试过以下内容:

global $someGlobal;
$someGlobal = "Random String";

同样的事情,没有效果。 另外,如果我尝试使用file.php,或只使用global,则在$someGlobal中,它仍然无效。

据我所知,从php.net上的文档中使用mylib.php中的全局$someGlobal(并将其插入到file.php的顶层),它实际上并没有做太多,因为它是就我所知,已经处于范围层次结构的“顶层”。但是,我认为将其注册为全局可能允许从函数内部访问它,但显然不是这种情况。

任何人都可以解释原因,并解释如何解决这个问题吗?

编辑:我不应该在file.php中,如果我使用$_GLOBALS['someGlobal'];,如果它不在函数中,则该值可以恢复正常。

3 个答案:

答案 0 :(得分:2)

错误的变量名称。这是$GLOBALS而不是$_GLOBALS

http://www.php.net/manual/en/reserved.variables.globals.php

答案 1 :(得分:0)

From the docs_变量中没有$GLOBALS

这对我来说很好用:

$GLOBALS['glob'] = "string";

function foob() {
  echo $GLOBALS['glob'];
}

foob();

答案 2 :(得分:0)

它是$GLOBALS,而不是$_GLOBALS