太原网站优化培训,做网站的硬件成本,WordPress出现508,晋中市住房与城乡建设厅网站From: http://blog.csdn.net/happyqyt/article/details/7219889 用PHP开发项目#xff0c;不可避免的会使用到全局变量#xff0c;比如一些网站的配置信息#xff0c;全站通用#xff0c;那就可以在一个地方设置#xff0c;然后多个地方调用。 把变量定义为全局变量可以有…From: http://blog.csdn.net/happyqyt/article/details/7219889 用PHP开发项目不可避免的会使用到全局变量比如一些网站的配置信息全站通用那就可以在一个地方设置然后多个地方调用。 把变量定义为全局变量可以有两种方法global和$GLOBALS[]。很多人都认为global和$GLOBALS[]只是写法不同而已其实是有差别的。 先来看看global php对global变量的解析是global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。 看一下下面一段PHP代码 [php] view plaincopyprint? $a123; function test1(){ global $a; //如果不把$a定义为global变量函数体内是不能访问$a的 echo $a; //123 } test1(); global $b; $b 456; function test2(){ var_dump($b); //NULL } test2(); function test3(){ global $c; $c789; } test3(); echo $c; //789 $a123;
function test1(){global $a; //如果不把$a定义为global变量函数体内是不能访问$a的echo $a; //123
}
test1();global $b;
$b 456;
function test2(){var_dump($b); //NULL
}
test2();function test3(){global $c;$c789;
}
test3();
echo $c; //789 [php] view plaincopyprint? $a123; function test1() { global $a; //如果不把$a定义为global变量,函数体内是不能访问$a的 echo $a; //123 } test1(); global $b; $b456; function test2() { var_dump($b); //NULL } test2(); function test3() { global $c; $c789; } test3(); echo $c; //789 $a123;
function test1()
{
global $a; //如果不把$a定义为global变量,函数体内是不能访问$a的
echo $a; //123
}
test1();global $b;
$b456;
function test2()
{
var_dump($b); //NULL
}
test2();function test3()
{
global $c;
$c789;
}
test3();
echo $c; //789 通过代码得出总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用。 再来看看$GLOBALS[] [php] view plaincopyprint? $var11; $var22; function test1(){ $GLOBALS[var2]$GLOBALS[var1]; } test1(); echo $var2; //1 $var31; $var42; function test2(){ global $var3,$var4; $var4$var3; } test2(); echo $var4; //2 $var11;
$var22;
function test1(){$GLOBALS[var2]$GLOBALS[var1];
}
test1();
echo $var2; //1$var31;
$var42;
function test2(){global $var3,$var4;$var4$var3;
}
test2();
echo $var4; //2 [php] view plaincopyprint? $var1 1; $var2 2; function test1(){ $GLOBALS[var2] $GLOBALS[var1]; } test1(); echo $var2; //1 $var3 1; $var4 2; function test2(){ global $var3,$var4; $var4 $var3; } test2(); echo $var4; //2 $var1 1;
$var2 2;
function test1(){ $GLOBALS[var2] $GLOBALS[var1];
}
test1();
echo $var2; //1$var3 1;
$var4 2;
function test2(){ global $var3,$var4; $var4 $var3;
}
test2();
echo $var4; //2 为什么$var2的打印结果是1而$var4的打印结果为2呢其实就是因为$var4的引用指向了$var3的引用地址。$var4的实际值并没有改变。官方的解释是$GLOBALS[var]是外部的全局变量本身global $var是外部$var的同名引用或者指针。 也许这个例子还不是很清晰我再引入一个例子 [php] view plaincopyprint? $var1 1; function test1(){ unset($GLOBALS[var1]); } test1(); var_dump($var1); //NULL $var2 1; function test2(){ global $var2; unset($var2); } test2(); echo $var2; //1 $var1 1;
function test1(){ unset($GLOBALS[var1]);
}
test1();
var_dump($var1); //NULL $var2 1;
function test2(){ global $var2; unset($var2);
}
test2();
echo $var2; //1 [php] view plaincopyprint? $var1 1; function test1(){ unset($GLOBALS[var1]); } test1(); var_dump($var1); //NULL $var2 1; function test2(){ global $var2; unset($var2); } test2(); echo $var2; //1 $var1 1;
function test1(){ unset($GLOBALS[var1]);
}
test1();
var_dump($var1); //NULL$var2 1;
function test2(){ global $var2; unset($var2);
}
test2();
echo $var2; //1 $var1的值被删除而$var2的值还存在。这就证明$var2只是别名引用本身的值没有受到任何的改变。 也就是说global $var其实就是$var $GLOBALS[var]调用外部变量的一个别名而已