遍历后,$elements 值被修改,最后的值被替换为 2
$elements = [1,2,3];
foreach ($elements as &$element) {
echo json_encode($element)."\n";
}
echo json_encode($elements)."\n";
foreach ($elements as $element) {
echo json_encode($element)."\n";
}
echo json_encode($elements)."\n";
// 输出
/**
1
2
3
[1,2,3]
1
2
2
[1,2,2]
**/
看一下这个链接:
https://www.cnblogs.com/caiji/p/9293254.html
第二次循环前加个 unset($element); 就正常了。
$elements = [1,2,3];
$element = '';
foreach ($elements as &$element) {
echo json_encode($element)."\n";
}
echo json_encode($elements)."\n";
unset($element);
foreach ($elements as $element) {
echo json_encode($element)."\n";
}
echo json_encode($elements)."\n";