下面我们先来看一个例子:
关于global使用的:
<?php
/**********************
PHP晋级之路
Create by June
************************/
$a = 1;
$b = 2;
function fun1()
{
global $a,$b;
$a = &$b;
}
fun1();
echo $a;
?>
相信大家都会觉得这个程序应该会输出2,但是该程序运行后输出的结果为1;到底为什么结果和我们想的不一样呢;我们看一下下面的图就大概明白了:
在该程序调用global $a,$b;时,当前内存中各个变量的情况就如下图所示,就相当于多定义了一个与$a和$b同名的引用或者是地址;执行$a = &$b;时只是把$a的一个引用指向$b;所以输出$a的值还是1;
关于$GLOBALS[]的使用:
<?php
/**********************
PHP晋级之路
Create by June
************************/
$a = 1;
$b = 2;
function fun1()
{
$GLOBALS['a'] = $GLOBALS['b'];
}
fun1();
echo $a;
?>
输出的是2;因为$GLOBALS['a'] 代表的就是$a的实体,$GLOBALS['a'] 的值被修改了,$a的值肯定也会被修改的!