PHP全局变量与超级全局变量区别分析


Posted in PHP onApril 01, 2016

本文分析了PHP全局变量与超级全局变量区别。分享给大家供大家参考,具体如下:

全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不会到函数内部。所以在函数内部使用的时候常常看到类似global $a;

超全局变量作用域在所有脚本都有效。所以,在函数可直接使用。比如 $_GET,$_SERVER都是超全局变量。除$_GET,$_POST,$_SERVER,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中。注意,不要误写成$_GLOBALS。有点受到$_POST的影响了。

$GLOBAL是一个特殊的php自定义的数组。超级全局变量。跟$_SERVER一样,都属于超全局变量。

在手册中搜索$GLOBALS 就能查询超全局变量的具体说明和使用方法

变量名就是该数组的索引。 说明:使用$GLOBALS['a']定义一个超全局变量后。可以使用$a直接访问

手册中这样解释的:

$GLOBALS — References all variables available in global scope 引用所有在全局范围内的可用的变量

结合例子这样理解:假如在函数外面定义了一个变量$a。那么在函数中可用通过$GLOBALS['a']获取到这个变量的值。所以,$GLOBALS数组里面就是:用户定义的所有全局变量。

为什么称它为超级全局变量。对比$_POST,在函数里面可用直接使用。根本不需要使用global语句了。所以$GLOBALS也是这样的原理,只是$_POST保存是post方式传递的变量。$GLOBALS保存的是用户定义的全局变量。

个人理解:

之前对超级全局变量理解不对:超级全局变量在所有脚本下有效,这样表述导致了理解上细微的偏差。如果在所有脚本下有效,那么是不是$GLOBALS保存的超级全局变量,在一个php文件中定义后,在另一个文件中还能获取到。

显然不会是这样的。估计受到了$_POST的影响,因为它好像所有人都能去访问到。没有意识到,你只能访问到当前处理到的$_POST数据。不可能两个人同时提交留言,php文件获取到post的数据怎么区别。这个数据只能是当前线程的。最后,超级全局变量可以这样看,因为它是相对于全局变量而言的。比全局变量更一个层次,全局变量不能作用到函数内部。它就解决了这个问题。在其他语言中,全局变量都能作用到函数内部。php语言设计就不是这样的。

全局变量直接在函数内使用,那么总得提供一种变量能直接使用的吧。就出来了超级全局变量的概念。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php cookies中删除的一般赋值方法
May 07 PHP
php 数组使用详解 推荐
Jun 02 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
PHP中SESSION过期设置
Mar 09 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 #PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 #PHP
Zend Studio使用技巧两则
Apr 01 #PHP
PHP数学运算与数据处理实例分析
Apr 01 #PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 #PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 #PHP
php获取本机真实IP地址实例代码
Mar 31 #PHP
You might like
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
Javascript 获取LI里的内容
2008/12/17 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
Django中如何使用sass的方法步骤
2019/07/09 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
python创建n行m列数组示例
2019/12/02 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Python实现异步IO的示例
2020/11/05 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
学生干部的自我评价分享
2014/01/18 职场文书
小学教师听课制度
2014/02/01 职场文书
食品安全承诺书范文
2014/08/29 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
社区好人好事材料
2014/12/26 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL