PHP中全局变量global和$GLOBALS[]的区别分析


Posted in PHP onAugust 06, 2012

一、举例比较
例一:

<?php 
$var1 = 1; 
function test(){ 
unset($GLOBALS['var1']); 
} 
test(); 
echo $var1; 
?>

因为$var1被删除了,所以什么东西都没有打印。
例二:
<?php 
$var1 = 1; 
function test(){ 
global $var1; 
unset($var1); 
} 
test(); 
echo $var1; 
?>

意外的打印了1。证明删除的只是别名引用,其本身的值没有受到任何的改变。

二、解释
global $var其实就是&$GLOBALS['var'],调用外部变量的一个别名而已。
上面代码中的$var1和$GLOBALS['var1']是指的同一变量,而不是两个不同的变量。
PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。
PHP的Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

三、结论
1.$GLOBALS['var']是外部的全局变量本身
2.global $var是外部$var的同名引用或者指针。

PHP 相关文章推荐
php中常用的预定义变量小结
May 09 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
WAF的正确bypass
Jan 05 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
如何判断微信付款码和支付宝付款码
Apr 01 PHP
php一个找二层目录的小东东
Aug 02 #PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 #PHP
PHP服务器页面间跳转实现方法
Aug 02 #PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 #PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 #PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 #PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 #PHP
You might like
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
php中error与exception的区别及应用
2014/07/28 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
广告显示判断
2006/08/31 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
自我评价正确写法范文
2013/12/10 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
高校教师个人总结
2015/02/10 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers
Windows7下FTP搭建图文教程
2022/08/05 Servers