$arr的值是什么,为什么?
<?php
$arr=[1,2,3];
foreach ($arr as &$v){
//nothing to do
}
foreach ($arr as $v){
//nothing to do
}
var_export($arr);
?>
答案: array ( 0 => 1, 1 => 2, 2 => 2, )
解析:
//这个过程相当于
$arr=[1,2,3];
&$v=$arr[0];//$v成为$arr[0]的引用
&$v=$arr[1];//$v成为$arr[1]的引用
&$v=$arr[2];//$v成为$arr[2]的引用
//此处结束$arr=[1,2,3];
$v=$arr[0];//因为作用域被改变的原因,此处$v实际上是$arr[2]的引用,相当于$arr[2]=$arr[0];$arr=[1,2,1];
$v=$arr[1];//相当于$arr[2]=$arr[1];$arr=[1,2,2];
$v=$arr[2];//相当于$arr[2]=$arr[2];$arr=[1,2,2];