$a =1;
$b = $a;
$b=2;
$a=1;
此时 2赋值给$b $a还是1
$a = 1;
$b=&$a;
$b=2;
$a=2;
此时 $b赋值给2 $a变成2
第一次循环 一 $arr[0]= int(1)
二 $arr[1] = int(2)
三 $arr[2]=&int(3)=$v 此时$v=3; 这个时候$v是引用的
第二次循环 一 $v = $arr[0] 1 $v=1
二 $v=$arr[1] 2 $v =2 这个时候$v是等于2的
三 $v=$arr[2] 2 $v =2 这个时候$v是赋值的
此时$arr[2]是等于$v的 并且随着$v的变化而变化
当不是引用的时候 就是赋值的时候 $arr[2] 就是3
php手册也有说明 尽量不要使用 如果使用要用unset()销毁
原理实现