深入理解php中$GLOBALS与global区别
在php中$GLOBALS是超全局变量而global也是一个全局变量,那么它们在应用中有什么区别呢,下面我就整理了一些相关的例子各各位同学一起分享吧。
php中有一个不为很多人所用的超全局变量$GLOBALS。合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别。
$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了。
global与$GLOBALS['']区别
$GLOBALS
$GLOBALS — 引用全局作用域中可用的全部变量
说明 ;
一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问,例如:
<?php $var1 = 'www.phprm.com'; $var2 = 'www.google.cn'; test(); function test() { $var1 = 'taobao'; echo $var1, '<br />'; global $var1; echo $var1, '<br />'; echo $GLOBALS['var2']; } ?>
结果将打印为:
taobao http://www.phprm.com www.google.cn
下面主要说明一下global和$GLOBALS的区别:
$GLOBALS['var']是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致。
下面通过例子说明一下:
<?php $var1 = 1; $var2 = 2; function test() { $GLOBALS['var2'] = & $GLOBALS['var1']; } test(); echo $var2; ?>
打印结果为1
<?php $var1 = 1; $var2 = 2; function test() { global $var1, $var2; $var2 = & $var1; } test(); echo $var2; ?>
打印结果为2。为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。我们再来看一个例子吧。
<?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其实就是$var=&$GLOBALS['var']。调用外部变量的一个别名而已。
永久地址:http://www.phprm.com/code/59215.html
转载随意~请带上教程地址吧^^