1.代码:
<?php $arr = array(‘one‘,‘two‘,‘three‘); foreach ($arr as $value){ echo ‘Value:‘.$value.‘<br />‘; } echo ‘<hr/>‘; foreach ($arr as &$value){ echo ‘Value:‘.$value.‘<br />‘; } echo ‘<hr/>‘; // reset($arr); foreach ($arr as $value){ echo ‘Value:‘.$value.‘<br />‘; } ?>
2.结果
3.原因:
第一次带&的foreach并没有改变数组的内容。。而是最后一次循环$value引用了数组的最后一个项 (可以测试一下,在第一次循环结束后unset($value),第二次循环的结果就不会有变化),在你第二个foreach也是使用的$value变量,这才造成了怪异的问题(可以换个变量,比如$val,输出的数组就不会有变化)。第二个foreach是赋值给$value,但是这时的$value是引用的数组的最后一个值,所以第一次循环把one赋值给了最后一个值,第二次把two赋值给最后一个,第三次也就是最后一个已经在第二次循环被赋值为two,所以仍然是two。
时间: 2024-08-06 03:25:40