$GLOBALS
当我使用此代码打印时:
<?php print_r($GLOBALS); ?>
我得到这个输出:
Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [GLOBALS] => Array *RECURSION* )
*RECURSION*
在这种情况下,“”是什么意思,为什么不打印$_SERVER
,$_REQUEST
等?
请参阅PHP 手册的这一部分:
请记住,$GLOBALS 本身就是一个全局变量。所以这样的代码不起作用:
<?php print '$GLOBALS = ' . var_export($GLOBALS, true) . "\n"; ?>
这会导致错误消息:“嵌套级别太深 - 递归依赖?”
您已经检索了整个列表 - 您只是无法显示其中的一部分(包含递归的列表,因为您将有超时而不是任何有意义的东西)。
说到,它是,和$_REQUEST
的派生词,所以它的内容是多余的。$_GET
$_POST
$_COOKIE
编辑:有一个旧的错误/功能,似乎是填充$GLOBALS
和$_SERVER
访问$_REQUEST
它们的时间。所以尝试访问$_REQUEST
并希望它有所帮助。无论如何,它可以在$GLOBALS
之后找到:ideone.com/CGetH
$GLOBALS
包含自己作为一个数组。在PHP 参考中,您可以找到以下定义$GLOBALS
:
一个关联数组,包含对当前在脚本全局范围内定义的所有变量的引用。变量名是数组的键。
因此,它还必须包含自身,这会导致递归。
其他数组可能只是空的,因为您的脚本中没有发生任何其他事情。
关于递归有一个古老的笑话:“要理解递归,你必须理解递归”。
顺便说一句:它在我的计算机上输出 _SERVER。
当您有一个指向自身的对象时……即,它只会绕圈子。