1、变量引用
说明:变量a和变量a的引用,从底层来看实际上就是同一份内存空间存放的变量,他们的关系实际就是小明有一个名字叫小明,还有一个英文名字叫Tom,你叫小明和Tom,都只有一个人答复你。
<?php
function add(&$a){
$a+=100;
}
$a = 10;
$b = &$a;
echo $a;
echo "\n";
echo $b;
echo "\n";
add($a);
echo $a;
echo "\n";
echo $b;
echo "\n";
?>
运行结果:
10
10
110
110
2、使用unset释放变量的引用
说明:unset释放一个变量a的引用只是解开了名字之间的绑定关系,并没有释放变量a。
<?php
$a = 10;
$b = &$a;
unset($b);
echo $a;
?>
运行结果:
10
3、引用的返回
说明:$a=&test() 这语句说的是将test函数返回值得引用赋给$a,下面的例子中$b具有static属性,从c语言角度来讲这是放在全局(静态)初始化区,程序退出$b才会释放,执行$a=&test()相当于$a = &$b;
<?php
function &test() {
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
echo $b;
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2
$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test();//这条语句会输出 $b的值 为6
?>