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 相关文章推荐
关于BIG5-HKSCS的解决方法
Mar 20 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
php后门URL的防范
Nov 12 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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
77A一级收信机修理记
2021/03/02 无线电
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
JavaScript库 开发规则
2009/01/31 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python排序方法实例分析
2015/04/30 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python数据抓取3种方法总结
2021/02/07 Python
UNIX特点都有哪些
2016/04/05 面试题
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
银行介绍信范文
2014/01/10 职场文书
六查六看自查材料
2014/02/17 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
发票退票证明
2015/06/24 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server