脚本宝典收集整理的这篇文章主要介绍了理解PHP $GLOBALS变量,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在学习PHP时,我遇到了预定义全局变量的概念,即superglobals.
为了更好地理解“SuPErglobals”,我编写了以下代码并在我的本地机器上的浏览器中执行它(ielocalhost):
<!DOCTYPE htML> <html> <body> <?PHP echo "<PRe>"; print_r($GLOBALS); echo "</pre>"; ?> </body> </html>
我在浏览器中得到以下输出:
Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( [toWorkNormally] => 1 ) [_FILES] => Array ( ) [GLOBALS] => Array *RECURSION* )
以上输出在我的脑海中产生了许多疑点如下:
>根据我在PHP中的知识,有九种类型
superglobals(预定义的PHP全局变量)即. $GLOBALS,
$_SERVER,$_REQUEST,$_POST,$_GET,$_FILES,$_ env,$_COOKIE和
$_SESSION那么我怀疑的是预定义全局数组中的数组元素是什么
$GLOBALS即. [_GET],[_ POST],[_ COOKIE],[_ FINILES]意味着他们的意思
他们自己作为超级全球的独立存在?
> [toWorkNormally] =>是什么意思1从上面的数组输出?
> RECURSION在元素[GLOBALS]中的含义是什么,以及如何打印
那些元素?
>因为$GLOBALS数组的目的是存储用户全局声明的变量,那么这个数组是如何预先填充其他一些值的,因为我没有在我的代码中声明任何全局变量?
注意:我在我的机器上使用“Microsoft Windows 10 Home Single Language”操作系统.这是一个64位操作系统.我正在使用最新版本的XamPP与PHP 7.0.13和HTTP apache Web服务器v.2.4.23在本地运行程序.另请注意,我的代码中没有将任何其他变量定义为全局变量或本地变量.
问题1& 3:
是的,关于9个超长球是正确的,但要记住的一个非常重要的事情是$GLOBALS – 引用全局范围内可用的所有变量.
一个有趣的旁注,请注意$GLOBALS是唯一不以下划线开头的超全球.
由于$GLOBALS包含对包括其自身在内的所有其他超全局的引用这一事实,当我们print_r($GLOBALS)时,它还将包括输出中的其他超全局.因为$GLOBALS也引用了自己,所以我们得到了你在第3点提出的回复.您可以将其视为包含$GLOBALS的无限维数组.与infinte循环几乎相同的想法.
[GLOBALS] => Array ( [GLOBALS] => Array ( [GLOBALS] => Array ( ... ) ) )
相反,脚本会看到这个并停止执行并只打印RECURSION.现在我已经在3种不同的环境中进行了测试,并且每次打开超大球的顺序都会发生变化,但是一旦达到$GLOBALS,它就会停止并打印RECURSION.
问题2:
我在$_COOKIE [toWorkNormally] =>上找不到任何信息我假设这是设置在其他地方.我在任何测试中都没有看到它.
问题4:
这既不正确也不正确. $GLOBALS的目的不是存储用户全局创建的所有变量.它仅引用全局范围内可用的所有变量,包括超全局变量.这就是为什么你在输出中看到所有其他超全球的原因.但是很多开发人员都认为用户定义的全局变量存储在$GLOBALS中.
Description in the PHP.net manual
要查看所有超级全局,您必须单独使用print_r()中的每一个.
要检查所有用户定义的全局变量,可以使用array_keys($GLOBALS),所有非超全局变量的项很可能是用户定义的全局变量.
回应你的第一条评论,不,他们并没有什么不同.未打印的超级全局仍然是数组的一部分,但执行/输出停止,因为它到达$GLOBALS时会返回RECURSION. superglobals以随机顺序打印,并且在$GLOBALS不会被看到,因为它在$GLOBALS处检测到RECURSION并停止输出.
您可以使用print_r(array_keys($GLOBALS))检查所有超全局变量/全局变量; $_SESSION除外,因为会话尚未启动. print_r($_ SESSION)会给你一个未定义的变量$_SESSION Notice.当你输入session_start()时,你将能够看到$_SESSION;就在你打印之前.
以上是脚本宝典为你收集整理的理解PHP $GLOBALS变量全部内容,希望文章能够帮你解决理解PHP $GLOBALS变量所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。