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静态类
Nov 25 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
Jan 07 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
精细化工应届生求职信
2013/11/17 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
个人股份合作协议书
2014/10/24 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
公司内部升职自荐信
2015/03/27 职场文书
干部培训工作总结2015
2015/05/25 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python