PHP之变量范围
大部分的PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require引入的文件
这里变量$a将会在包含文件b.inc中生效
<?php$a=1;include'b.inc';?>
函数范围在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内
下面这个脚本不会有任何输出,因为echo语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值
<?php$a=1;/*globalscope*/functionTest(){echo$a;/*referencetolocalscopevariable*/}Test();?>
global关键字以下脚本的输出将是“3”。在函数中声明了全局变量a和a和b之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP没有限制
<?php$a=1;$b=2;functionSum(){global$a,$b;$b=$a+$b;}Sum();echo$b;//3?>
在全局范围内访问变量的第二个办法,是用特殊的PHP自定义$GLOBALS数组
GLOBALS是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。GLOBALS之所以在全局范围内存在,是因为GLOBALS是一个超全局变量
<?php$a=1;$b=2;functionSum(){$GLOBALS['b']=$GLOBALS['a']+$GLOBALS['b'];}Sum();echo$b;//3?>
预定义变量对于全部脚本而言,PHP提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头
下面是预定义变量的列表
超全局变量—超全局变量是在全部作用域中始终可用的内置变量$GLOBALS—引用全局作用域中可用的全部变量$_SERVER—服务器和执行环境信息$_GET—HTTPGET变量$_POST—HTTPPOST变量$_FILES—HTTP文件上传变量$_REQUEST—HTTPRequest变量$_SESSION—Session变量$_ENV—环境变量$_COOKIE—HTTPCookies$php_errormsg—前一个错误信息$HTTP_RAW_POST_DATA—原生POST数据$http_response_header—HTTP响应头$argc—传递给脚本的参数数目$argv—传递给脚本的参数数组
大多数的预定义变量并不是超全局变量,它们需要用'global' 关键字来使它们在函数的本地区域中有效
超全局变量超全局变量在任何范围内都有效,它们并不需要'global'声明
下面是超全局变量的列表
$GLOBALS$_SERVER$_GET$_POST$_FILES$_COOKIE$_SESSION$_REQUEST$_ENV
<?phpfunctiontest_global(){//预定义变量global$HTTP_POST_VARS;echo$HTTP_POST_VARS['name'];//超全局变量echo$_POST['name'];}?>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。