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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
不错的一篇面向对象的PHP开发模式(简写版)
Mar 15 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
非常实用的php验证码类
May 15 PHP
php 如何获取文件的后缀名
Jun 05 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP保留两位小数的几种方法
Jul 24 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
PHP数组array类常见操作示例
May 15 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 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中json_decode()和json_encode()的使用方法
2012/06/04 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python环境变量设置方法
2016/08/28 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
大学生求职信范文应怎么写
2014/01/01 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
优秀创业计划书分享
2019/07/19 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
springboot中一些比较常用的注解总结
2021/06/11 Java/Android