background image

PHP 中全局变量 global $GLOBALS[]的区别分析

$GLOBALS

['var']是外部的全局变量本身,

global

 

$var

是外部

$var

的同名引用或者指针

一、举例比较

 

例一:

 

代码如下

:

 
<?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 的 Global 变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是
应用于当前页面,包括

include

require

的所有文件。