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
的所有文件。