用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

深入理解php中$GLOBALS与global区别

时间:2015-01-23  来源:西部数据  作者:西部数据

php中有一个不为很多人所用的超全局变量$GLOBALS,合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别.

$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组,变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了.

global与$GLOBALS['']区别

$GLOBALS:$GLOBALS — 引用全局作用域中可用的全部变量

说明:一个包含了全部变量的全局组合数组,变量的名字就是数组的键.

在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的,如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问.例如:

  1. <?php 
  2. $var1='www.phpfensi.com'
  3. $var2='www.google.cn'
  4. test(); 
  5. function test(){ 
  6.     $var1='taobao'
  7.     echo $var1,'<br />'
  8.  global $var1
  9.  echo $var1,'<br />'
  10.     echo $GLOBALS['var2']; 
  11. //结果将打印为: 
  12. //taobao 
  13. //www.phpfensi.com 
  14. //www.google.cn 

下面主要说明一下global和$GLOBALS的区别:

$GLOBALS['var']是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致.

下面通过例子说明一下:

  1. $var1=1;
  2. $var2=2;
  3. function test(){ 
  4.  
  5.     $GLOBALS['var2']=&$GLOBALS['var1'];
  6. }
  7. test();
  8. echo $var2
  9. //打印结果为1 
  10. $var1=1;
  11. $var2=2;
  12. function test(){
  13.     global $var1,$var2
  14.  
  15.     $var2=&$var1;
  16. }
  17. test();
  18. echo $var2

打印结果为2,为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址,导致实质的值没有改变,我们再来看一个例子吧.

  1. $var1=1; 
  2.  
  3. function test(){ 
  4.  
  5.     unset($GLOBALS['var1']); 
  6.  
  7. }
  8. test();
  9. echo $var1;
  10. //因为$var1被删除了,所以什么东西都没有打印。 
  11. $var1=1; 
  12.  
  13. function test(){
  14.     global $var1;
  15.     unset($var1);
  16.  
  17. test(); 
  18.  
  19. echo $var1

打印结果为1,证明删除的只是别名|引用,起本身的值没有受到任何的改变,也就是说global $var其实就是$var=&$GLOBALS['var'],调用外部变量的一个别名而已.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门