深入理解php中$GLOBALS与global区别
发布:smiling 来源: PHP粉丝网 添加日期:2014-06-23 08:34:51 浏览: 评论:0
php中有一个不为很多人所用的超全局变量$GLOBALS,合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别.
$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组,变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了.
global与$GLOBALS['']区别
$GLOBALS:$GLOBALS — 引用全局作用域中可用的全部变量
说明:一个包含了全部变量的全局组合数组,变量的名字就是数组的键.
在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的,如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问.例如:
- <?php
- $var1='www.phpfensi.com';
- $var2='www.google.cn';
- test();
- function test(){
- $var1='taobao';
- echo $var1,'<br />';
- global $var1;
- echo $var1,'<br />';
- echo $GLOBALS['var2'];
- }
- //结果将打印为:
- //taobao
- //www.phpfensi.com
- //www.google.cn
下面主要说明一下global和$GLOBALS的区别:
$GLOBALS['var']是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致.
下面通过例子说明一下:
- $var1=1;
- $var2=2;
- function test(){
- $GLOBALS['var2']=&$GLOBALS['var1'];
- }
- test();
- echo $var2;
- //打印结果为1
- $var1=1;
- $var2=2;
- function test(){
- global $var1,$var2;
- $var2=&$var1;
- }
- test();
- echo $var2;
打印结果为2,为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址,导致实质的值没有改变,我们再来看一个例子吧.
- $var1=1;
- function test(){
- unset($GLOBALS['var1']);
- }
- test();
- echo $var1;
- //因为$var1被删除了,所以什么东西都没有打印。
- $var1=1;
- function test(){
- global $var1;
- unset($var1);
- }
- test();
- echo $var1;
打印结果为1,证明删除的只是别名|引用,起本身的值没有受到任何的改变,也就是说global $var其实就是$var=&$GLOBALS['var'],调用外部变量的一个别名而已.
Tags: $GLOBALS globa l区别
相关文章
- ·php 安全register globals设置为TRUE的危害(2013-11-28)
- ·php提示Deprecated: Directive 'register_globals' is deprecated in PHP 5.3(2018-10-26)
- ·深入理解PHP中的global(2021-04-03)
- ·支付宝开发中return_url和notify_url的区别介绍(2014-09-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)