$var1 = 'zhuchunyu';
$var2 = "";
function foo($vaa){
global $var1,$var2;
if (!$vaa){
$var2 = & $var1;
} else{
$GLOBALS["var2"] = & $var1;
}
}
foo(false);
print "var2------->".$var2."\n"; // $var2是空字符串
foo(true);
print "var2------->".$var2."\n"; // $var2是zhuchunyu
// 解析打印效果
function &foo(){
static $b=0; // 申明一个静态变量
$b = $b +1;
echo $b;
return $b;
}
$a = foo();
$a = 5;
$a = foo();
$a = &foo();
$a = 5;
$a = foo();
// 解释下 $a = foo() , $a = $foo()
对于上面的foo函数中的static,指定一个静态变量,当执行一次函数,static设置的变量,是不会消失的。
$a = foo() 它是将函数的返回值的值赋值给$a,
$a = $foo() 它是将函数的返回值的内存地址赋值给$a,一旦$a改变了值,那么函数的返回值也会改变,foo函数的返回值就是static静态变量,所以函数的返回值改变,这个静态变量也会改变。
// 打印效果1236
$a = 1;
$b = &$a;
unset($a);
print $b; // 输出1
// 解析下
unset删除一个变量,它只是删除了变量与值的内存地址之间的关系,不会删掉值,所以你虽然删除了$a,但是值没有删掉,所以$b对应的值还是1。