$a = array(1,2,3,4);

foreach($a as &$b){

echo $b.\"大众\n\"大众;

phpaphp 中foreacha as u0026b现象解释 HTML

}

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