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版(4)
Oct 09 PHP
php的控制语句
Oct 09 PHP
ezSQL PHP数据库操作类库
May 16 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
php数据访问之查询关键字
May 09 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
PHP中strval()函数实例用法
Jun 07 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
资料注册后发信小技巧
2006/10/09 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
js实现图片旋转的三种方法
2014/04/10 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
django-csrf使用和禁用方式
2020/03/13 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
商务日语专业毕业生自荐信
2014/03/27 职场文书
倡议书范文
2014/04/16 职场文书
小学英语课后反思
2014/04/26 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
幼师个人总结范文
2015/02/28 职场文书
培养联系人考察意见
2015/06/01 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
一文弄懂MySQL索引创建原则
2022/02/28 MySQL