Php 什么是*递归*”;在打印$GLOBALS时是什么意思?

Php 什么是*递归*”;在打印$GLOBALS时是什么意思?,php,arrays,recursion,Php,Arrays,Recursion,当我使用此代码打印$GLOBALS时: <?php print_r($GLOBALS); ?> 我得到这个输出: Array([\u-GET]=>Array()[\u-POST]=>Array()[\u-COOKIE]=>Array()[\u-FILES]=>Array()[GLOBALS]=>Array*递归*) 在这种情况下,“*递归*”是什么意思?为什么$\u服务器,$\u请求等没有打印?当对象指向自身时。。。i、 例如,它只是在循环。请参见: 请记住,$GLOBALS本

当我使用此代码打印
$GLOBALS
时:

<?php print_r($GLOBALS); ?>

我得到这个输出:

Array([\u-GET]=>Array()[\u-POST]=>Array()[\u-COOKIE]=>Array()[\u-FILES]=>Array()[GLOBALS]=>Array*递归*)


在这种情况下,“
*递归*
”是什么意思?为什么
$\u服务器
$\u请求
等没有打印?

当对象指向自身时。。。i、 例如,它只是在循环。

请参见:

请记住,$GLOBALS本身就是一个全局变量。这样的代码是行不通的:

<?php
    print '$GLOBALS = ' . var_export($GLOBALS, true) . "\n";
?>

这将导致错误消息:“嵌套级别太深-递归依赖?”

您已经检索到了整个列表-您只是无法显示其中的一部分(包含递归的列表,因为您需要超时而不是任何有意义的内容)

当涉及到
$\u REQUEST
时,它是
$\u GET
$\u POST
$\u COOKIE
的派生,因此它的内容是冗余的


编辑:在访问
$\u服务器
$\u请求
时,似乎有一种方法正在填充
$GLOBALS
。因此,请尝试访问
$\u REQUEST
,希望它能有所帮助。无论如何,它可以在以后的
$GLOBALS
中找到:ideone.com/CGetH

$GLOBALS
将自身作为一个数组。在中,您可以找到
$GLOBALS
的定义:

一个关联数组,包含对脚本全局范围中当前定义的所有变量的引用。变量名是数组的键

因此,它还必须包含自身,这将导致递归。

其他数组可能只是空的,因为脚本中没有发生其他任何事情

关于递归有一个古老的笑话:“要理解递归,你必须理解递归”


顺便说一句:它在我的计算机上输出_服务器。

我已经看过了这个部分。我的问题是,当它为_POST等输出时,至少在一次运行中,它可能必须发布$_请求,$_服务器?too@swapnesh:有,当访问
$\u服务器和
$\u请求时,它们似乎正在填充
$GLOBALS
。因此,请尝试访问
$\u REQUEST
,希望它能有所帮助。不管怎样,你可以在
$GLOBALS
中找到它。之后:将此添加到你的答案中,然后我将接受它。thx获取信息兄弟:)@swapnesh:没问题,很高兴我帮助了你。我已将其粘贴到我的答案中;)哈我刚刚发现PHP本身是一个递归缩略词,因为它代表PHP超文本预处理器。。。以前从未注意过。通过维基百科效应获得:-)