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三层结构(上) 简单三层结构
Jul 04 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php curl post 时出现的问题解决
Jan 30 PHP
Zend Framework页面缓存实例
Jun 25 PHP
yii操作cookie实例简介
Jul 09 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 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
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
对联广告js flash激活
2006/10/19 Javascript
jquery 笔记 事件
2011/11/02 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
js实现分页功能
2017/05/24 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
Mac下安装vue
2018/04/11 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Golang与python线程详解及简单实例
2017/04/27 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
为什么使用接口?
2014/08/13 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
弄虚作假心得体会
2014/09/10 职场文书
开除员工通知
2015/04/22 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
nginx常用配置conf的示例代码详解
2022/03/21 Servers