$a = array(1,2,3,4);
foreach($a as &$b){
echo $b.\"大众\n\"大众;
}
foreach($a as $b){
echo $b.\公众\n\公众;
}
结果是啥?
1
2
3
4
1
2
3
3
解析:
第一次打印出来的是1,2,3,4这没有问题,第二个foreach打印出来的为啥是1,2,3,3?
关键在于 &$b 。$b是一个引用,在第一个foreach中,$b依次$a[0],$a[1],$a[2],末了是$a[3]的引用;
在第二次foreach中,
第一次循环是$b=$a[0],$b又是$a[3]的引用,以是此时$a的值是1,2,3,1
第二次循环是$b=$a[1],$b又是$a[3]的引用,以是此时$a的值是1,2,3,2
第三次循环是$b=$a[2],$b又是$a[3]的引用,以是此时$a的值是1,2,3,3
第四次循环是$b=$a[3],$b又是$a[3]的引用,在第三次循环中$a[3]=$b=$a[2],以是此时$a的值是1,2,3,3