加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-01-21 16:33:26 所属栏目:PHP教程 来源:互联网
导读:php中有一个不为很多人所用的超全局变量$GLOBALS,合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别. $GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组,变量的
  php中有一个不为很多人所用的超全局变量$GLOBALS,合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别.
 
  $GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组,变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了.
 
  global与$GLOBALS['']区别
 
  $GLOBALS:$GLOBALS — 引用全局作用域中可用的全部变量
 
  说明:一个包含了全部变量的全局组合数组,变量的名字就是数组的键.
 
  在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的,如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问.例如:
 
  <?php
  $var1='www.Cuoxin.com';
  $var2='www.google.cn';
  test();
  function test(){
      $var1='taobao';
      echo $var1,'<br />';
   global $var1;
   echo $var1,'<br />';
      echo $GLOBALS['var2'];
  }
  //结果将打印为:
  //taobao
  //www.Cuoxin.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'],调用外部变量的一个别名而已.

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读