php的引用(就是在变量或者函数、对象等前面加上&符号)
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 ?>
踩过这个坑,还有下一个坑等着你,这一路就是给自己填坑,坑填多了,也就习惯了,直到这一路平坦了,也就无怨无悔了。