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 分库分表hash算法
Nov 12 PHP
Views rows style模板重写代码
May 16 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 PHP
PHP高并发和大流量解决方案整理
Mar 09 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
239军机修复记
2021/03/02 无线电
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python转码问题的解决方法
2008/10/07 Python
python通过post提交数据的方法
2015/05/06 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
基于Python log 的正确打开方式
2018/04/28 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Django中的文件的上传的几种方式
2018/07/23 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python实现祝福弹窗效果
2019/04/07 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
python和JavaScript哪个容易上手
2020/06/23 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
酒吧总经理岗位职责
2013/12/10 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
反对邪教标语
2014/06/30 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
优秀员工事迹材料
2014/12/20 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang