源码:

<?php
function get_arr($arr){
unset($arr[0]);
}
$arr1=array(1,2);
$arr2=array(1,2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);
?>

输出结果(仅限于5.3之前,之后是会报错无法输出结果的):12

释义:
第一个get_arr()使用到了取引用符&,并且将$arr1传入。这样子,传入了$arr1的引用,在get_arr()内部相当于直接操作了$arr1数组,而该数组删除了数组首位的值,所以长度只有1。

而第二个get_arr()并没有使用引用,当你将$arr2传入时,相当于将$arr2复制了一份传入,get_arr()函数处理的只是$arr2的拷贝,所以他只是删除了$arr2拷贝的首位值,对$arr2本身没有影响

Related Posts: PHP-function get_arr($arr){ unset($arr[0]); }输出结果 :