<?php $arr = [1,2,3,4]; foreach ($arr as $k => &$v) {} print_r($arr); echo '<hr>'; unset($v); foreach ($arr as $k => $v) { print_r($arr); echo '<hr>'; } ?>
PHP没有块作用域,第一个foreach后会留下一个危险的引用,第二次foreach就会出现问题。避免的办法就是第一个foreach结束后,unset()掉$v;或者不使用重复的名称。