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的header和asp中的redirect比较
Oct 09 PHP
C# Assembly类访问程序集信息
Jun 13 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
PHP邮箱验证示例教程
Jun 01 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php文件上传的两种实现方法
2016/04/04 PHP
功能强大的php分页函数
2016/07/20 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
python实现FTP循环上传文件
2020/03/20 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
什么是python的自省
2020/06/21 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
财务会计实训报告
2014/11/05 职场文书
医生辞职信范文
2015/03/02 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js