PHP超全局变量$GLOBEL 与$_SERVER 的一个诡异的问题

作者: JONE 分类: PHP/MySQL 发布时间: 2018-07-31 19:33
PHP手册中介绍所
$GLOBALS是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量
$GLOBALS[‘_POST’] === $_POST 
$GLOBALS[‘_GET’] === $_GET
 以此类推那么 $GLOBALS[‘_SERVER’] === $_SERVER   也应该是成立的
<?php
//var_dump($_SERVER['ALLUSERSPROFILE']);

echo '<br>';

var_dump($GLOBALS[strtoupper("_SERVER")]);
以上代码打印结果如下
Notice: Undefined index: _SERVER in D:\phpstudy\WWW\index.php on line 6
NULL
但是对以上代码稍作修改
<?php
var_dump($_SERVER['ALLUSERSPROFILE']);

echo '<br>';

var_dump($GLOBALS[strtoupper("_SERVER")]);

 

那么打印结果如下
以上现象发现
只要是先调用了 $_SERVER,譬如如下代码 执行后也正常
$_SERVER;

echo '<br>';

var_dump($GLOBALS[strtoupper("_SERVER")]);
那么之后调用 $GLOBAL[‘_SERVER’]  时,$GLOBAL[‘_SERVER’] ===$_SERVER 
否则调用  $GLOBAL[‘_SERVER’] 时就会报错说 “ _SERVER ” 这个下标不存在。
实在不晓得什么情况,只有等待高人来访,解答一下咯

发表评论

电子邮件地址不会被公开。 必填项已用*标注