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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
如何做到多笔资料的同步
Oct 09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php SQL Injection with MySQL
Feb 27 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
php数字游戏 计算24算法
Jun 10 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
php实现的xml操作类
2016/01/15 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
JavaScript对象学习经验整理
2013/10/12 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
Python安装第三方库的3种方法
2015/06/21 Python
Python实现翻转数组功能示例
2018/01/12 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
python config文件的读写操作示例
2019/09/27 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
什么是.net
2015/08/03 面试题
新闻专业应届生求职信
2013/10/31 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
村委会换届选举方案
2014/05/03 职场文书
培训师岗位职责
2015/02/14 职场文书
毕业论文致谢信
2015/05/14 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP