理解PHP $ GLOBALS变量

PHP*_*Fan 8 php arrays global global-variables superglobals

我正在从w3schools的PHP教程学习PHP.

在学习PHP时,我遇到了预定义全局变量的概念,即Superglobals.

为了更好地理解"Superglobals",我写了下面的代码并在我的本地机器上的浏览器中执行它(ielocalhost):

<!DOCTYPE html>
<html>
  <body>

  <?php
    echo "<pre>";
    print_r($GLOBALS);
    echo "</pre>";
  ?>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在浏览器中得到了以下输出:

Array
(
    [_GET] => Array
        (
        )

    [_POST] => Array
        (
        )

    [_COOKIE] => Array
        (
            [toWorkNormally] => 1
        )

    [_FILES] => Array
        (
        )

    [GLOBALS] => Array
 *RECURSION*
)
Run Code Online (Sandbox Code Playgroud)

以上输出在我的脑海中产生了许多疑点如下:

  1. 根据我在PHP中的知识,有九种类型的超全局(预定义的PHP全局变量)即.$GLOBALS, $_SERVER, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE$_SESSION那么我的疑问是什么呢,从预定的整个数组的数组元素 $GLOBALS[_GET], [_POST], [_COOKIE], [_FILES]意味着他们有超自然的独立存在吗?
  2. [toWorkNormally] => 1上面的数组输出是什么意思?
  3. RECURSION在元素中的含义是什么[GLOBALS]以及如何打印这些元素?
  4. 由于$GLOBALS数组的目的是存储用户全局声明的变量,那么这个数组是如何预先填充其他一些值的,因为我没有在我的代码中声明任何全局变量?

注意:我在我的机器上使用"Microsoft Windows 10 Home Single Language"操作系统.这是一个64位操作系统.我正在使用最新版本的XAMPPPHP 7.0.13HTTP Apache Web服务器v.2.4.23在本地运行程序.另请注意,我的代码中没有将任何其他变量定义为全局变量或本地变量.

小智 0

$GLOBALS是所有超级全局变量和用户定义变量的全局变量。因此,例如,如果您$a = 10;$GLOBALS数组中声明了变量,则您有 key=>value 对,其中 key 是 a,value 是 10。如果您想从中获取某些内容,$GLOBALS只需将其写为数组键即可。

例子

$a = 25;
echo $GLOBALS['a'];
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,输出的值为$aso 25;

在您的示例中,toWorkNormally=>1这意味着您已设置名为 toWorkNormally 且值为 1 或 true 的 cookie

此外,当您在$GLOBALS['_GET']$GLOBALS['_POST']那里使用 get 或 post 方法提交表单时,您可以找到表单数据,因为您可以从超级全局$_GET$_POST