帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

深入理解php中$GLOBALS与global区别 - php高级应用

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

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'],调用外部变量的一个别名而已.

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《深入理解php中$GLOBALS与global区别 - php高级应用》
文章链接:https://www.admin99.cn/7270
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册