转:http://aa51.blog.163.com/blog/static/122314032011112510304271/
global $var1,$var2;
就是外部变量的同名引用,变量本身的作用范围仍然在函数体内。改变这些变量的值,外部的同名变量自然也改变。但一旦用了&,那么变量将不再是同名引用。
<?php
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2; // 作用范围在函数体内
$var1 = 3;
}
test();
echo $var1;
?>
结果是 3。因为是同名引用。<?
$var1 = 1;
$var2 = 2;
function test()
{
global $var1,$var2;
$var1 = &var2;
}
test();
echo $var1
?>
结果是1。因为在函数内的$var1经过赋值后与$var2具有相同的引用了。进一步看下面的代码。<?php$var1 = 1;$var2 = 2;function test_global() {global $var1,$var2;$var1=&$var2;$var1=7;}
test_global();echo $var1;echo $var2;?>
结果是1和7。因为在函数内的$var1与$var2具有相同的引用。因此改变了$var1的值,$var2的值夜作了改变。