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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
简单易用的计数器(数据库)
Oct 09 PHP
在PWS上安装PHP4.0正式版
Oct 09 PHP
php include的妙用,实现路径加密
Jul 29 PHP
一个PHP分页类的代码
May 18 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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邮件专题
2006/10/09 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP数据类型的总结分析
2013/06/13 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php实现网站留言板功能
2015/11/04 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
PHP7 windows支持
2021/03/09 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
python 求定积分和不定积分示例
2019/11/20 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
用python实现名片管理系统
2020/06/18 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
枚举与#define宏的区别
2014/04/30 面试题
一道Delphi上机题
2012/06/04 面试题
副主任竞聘演讲稿
2014/08/18 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
财务人员个人工作总结
2015/02/27 职场文书
法律意见书范本
2015/06/04 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers