什么是预定义变量

PHP提供给大家可以直接使用的变量,所有的预定义变量都是全局变量

预定义变量的分类

$GLOBALS //超全局变量,包含以下所有的预定义变量
$_SERVER //服务器和执行环境信息变量
$_ENV //环境变量
$_COOKIE //HTTP Cookies
$_SESSION //HTTP  Session变量
$_FILES //文件上传信息变量
$_GET //HTTP GET变量,主要接收以?形式传递的数据,像表单以get形式发送数据,包括超链接典型的?形式传递参数 $_GET["name"]
$_POST //HTTP POST变量,主要接收表单以post形式发送的数据 $_POST["name"]
$_REQUEST //$_GET+$_POST+$_COOKIE

$GLOBALS
php中有一个不为很多人所用的超全局变量$GLOBALS。合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别。

$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了。

在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问,例如:

$var1='www.xuxiaoke.com';
$var2='www.ftheme.com';
test();
function test(){
    $var1='taobao';
    echo $var1;
    global $var1;
    echo $var1;
    echo $GLOBALS['var2'];
}

结果如下

taobao
www.xuxiaoke.com
www.ftheme.com

global和$GLOBALS的区别

$GLOBALS[‘var’]是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量.而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致。