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 相关文章推荐
APMServ使用说明
Oct 23 PHP
PHP程序员编程注意事项
Apr 10 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHPUnit安装及使用示例
Oct 29 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
python读取mysql数据绘制条形图
2020/03/25 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
北京华建集团SQL面试题
2014/06/03 面试题
this关键字的作用
2016/01/30 面试题
关于保护环境的建议书
2014/08/26 职场文书
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL