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超文本预处理器。。。以前从未注意过。通过维基百科效应获得:-)