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中实现进程间通讯
Oct 09 PHP
某大型网络公司应聘时的笔试题目附答案
Mar 27 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
解析php时间戳与日期的转换
Jun 06 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 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
简单通用的JS滑动门代码
2008/12/19 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
深入理解node.js http模块
2018/01/24 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python实现按长宽比缩放图片
2018/06/07 Python
python 美化输出信息的实例
2018/10/15 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
python实现超市商品销售管理系统
2019/10/25 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
全球在线商店:BerryLook
2019/04/14 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
商场中秋节活动方案
2014/02/07 职场文书
公益广告标语
2014/06/19 职场文书
电子商务专业求职信
2014/07/10 职场文书
企业愿景口号
2015/12/25 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
Python 发送SMTP邮件的简单教程
2021/06/24 Python
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android