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学习笔记之数组篇
Jun 28 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
python测试驱动开发实例
2014/10/08 Python
详解Python字符串切片
2019/05/20 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
室内设计自我鉴定
2013/10/15 职场文书
运动会领导邀请函
2014/01/10 职场文书
房屋出售协议书
2014/04/10 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技