php - 为什么 PHP 需要递归存储相同的全局数据?

标签 php superglobals

这是随机 var_dump($GLOBALS) 的结果:

array(6) {
    ["_GET"] => array(0) {}
    ["_POST"] => array(0) {}
    ["_COOKIE"]=> array(1) {
        ["PHPSESSID"]=> string(26) "o8f2mggog45mq9p5ueafgu5hv6"
    }
    ["_FILES"] => array(0) {}
    ["GLOBALS"] => array(6) {
        ["_GET"] => array(0) {}
        ["_POST"] => array(0) {}
        ["_COOKIE"] => array(1) {
            ["PHPSESSID"] => string(26) "o8f2mggog45mq9p5ueafgu5hv6"
        }
        ["_FILES"] => array(0) {}
        ["GLOBALS"]=>
        *RECURSION*
        ["_SESSION"]=> &array(1) {
            ["somestrings"]=> string(16) "someotherstrings"
        }
    }
    ["_SESSION"] => &array(1) {
        ["somestrings"] => string(16) "someotherstrings"
    }
}

我是 PHP 的新手,不明白为什么 PHP 需要这样做?它不会使用更多存储空间吗?

最佳答案

因为根据定义,$GLOBALS 是一个全局变量;由于它包含所有全局变量,因此将自身包含在其中是有意义的。递归就在这些概念的定义中。

不,它不会使用更多的存储空间,因为它是一个指向自身的指针。如果它要递归地使用它自己的副本,就会耗尽内存。

关于php - 为什么 PHP 需要递归存储相同的全局数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091464/

相关文章:

php - 如何在 opencart 中创建自定义管理页面?

php - mysql子查询计数位置和分组依据

php - 我应该使用 PHP Superglobals 还是 Filter Input 来检索 $_GET 数据?

php - 将超全局变量包装在一个类中?

php - TinyMCE 和 Fancybox - 编辑器无法在第二个 View 上工作

php - Symfony 表单生成器中 $options 的解释和所有选项

php - 使用 php 制作博客

php - 超全局$_GET中键值对的顺序有保证吗?

iphone - Objective-C 和 iOS 中的超全局变量

PHP内置服务器/路由脚本: Empty superglobals