1.变量的引用
PHP 的引用允许你用两个变量来指向同一个内容(即指向同一个内存地址)
复制代码
<?php
$a="ABC";
$b =&$a;
echo $a;//这里输出:ABC
echo $b;//这里输出:ABC
$b="EFG";
echo $a;//这里$a的值变为EFG 所以输出EFG
echo $b;//这里输出EFG
?>
2.函数参数的引用传递(传址调用)
传址调用我就不多说了 下面直接给出代码
<?php
function test(&$a){
$a=$a+100;
}
$b=1;
echo $b;//输出1
test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了,相当于,$a = &$b;
echo "<br>";
echo $b;//输出101
?>
要注意的是,在这里test(1);的话就会出错,只有变量,函数或者对象可以进行引用传入。
3.函数的引用返回
<?php
function &test(){
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2
//以上跟正常函数调用一样,要用到函数的引用返回调用函数时才使用引用才有效果,所以原函数的&符号可以去掉,调用时使用&才有效
$a=&test();//这条语句会输出 $b的值 为3,&test()相当于将test()函数的返回值内存地址与$a内存地址指向同一个,改变返回值或者改变$a,两者都会改变
$a=5;
$a=test();//这条语句会输出 $b的值 为6
?>