关于foreach遍历
<?php $arr = [0,1,2]; $ref = &$arr; foreach($arr as $val){ echo $val,'<br>'; unset($arr[1]); } ?>
输出的是02
<?php $arr = [0,1,2]; foreach($arr as $val){ echo $val,'<br>'; unset($arr[1]); } ?>
输出的是012
只是相差了$ref = &$arr这行代码,&取地址符不是引用吗,让数组$arr有了个别名,这行代码应该写不写不会影响输出结果。为什么结果会不一样呢?
php版本5.5
28
收起
正在回答
1回答
您好,&代表引用传值。当使用&传入值时,会将原本的值改变。
<?php $arr = [0,1,2]; $ref = &$arr; foreach($arr as $val){ echo $val,'<br>'; unset($arr[1]); } ?>
当第一次执行foreach时,输出0,执行unset($arr[1]);,此时$arr的值为$arr=[0,2];,再次循环输出2。
<?php $arr = [0,1,2]; foreach($arr as $val){ echo $val,'<br>'; unset($arr[1]); } ?>
当程序第一次执行foreach时,输出0,执行unset($arr[1]);,此时$arr的值是没有改变的,因此输出1,再次循环输出2。
如果解决了您的问题,请采纳,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星