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 02 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
PHP闭包(Closure)使用详解
May 02 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php设计模式之策略模式应用案例详解
Jun 17 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
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
python 上下文管理器使用方法小结
2017/10/10 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python3解释器知识点总结
2019/02/19 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
给学校的建议书
2014/03/12 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
具结保证书范本
2015/05/11 职场文书
装修公司管理制度
2015/08/05 职场文书
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
MySQL 数据库范式化设计理论
2022/04/22 MySQL
python井字棋游戏实现人机对战
2022/04/28 Python
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers