购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 global关键字与global数组的区别

你也许记得,前面我们提到过global关键字和global数组。那么问题来了,它们长得如此像,似乎功能也相同,到底有什么区别?我们分别来看一下。

$GLOBALS['var']是外部的全局变量本身,global$var是外部$var的同名引用或者指针,如代码清单1-7所示:

代码清单1-7 删除全局变量


<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与&$GLOBALS['var']等价,相当于调用外部变量的一个别名,所以上面代码中的$var1和$GLOBALS['var1']指向的是同一个变量。

PHP的全局变量和C有一点点不同。在C语言中的全局变量在函数体内无效。而在PHP中,在函数中想调用外部全局变量时可用global声明。PHP的“全局”不是指整个网站,而是应用于当前页面,包括include或require的全部文件。

综合以上内容,我们总结出如下结论:

·$GLOBALS['var']是外部的全局变量本身。

·global$var是外部$var的同名引用或者指针。 POtzkVCle6CoJwtZW8b8uyhC/WCmF8eOwjgqCGGHvmkXncIeIswNofgyd2T4nMpA

点击中间区域
呼出菜单
上一章
目录
下一章
×