PHP foreach使用不当导致的死循环问题
有如下PHP的代码:
$list = [1, 2, 3];
// $v1 是引用
foreach ($list as &$v1) {
foreach ($list as $v2) {
echo 'loop';
}
}
运行后一切是正常的,两次遍历后,一共输出9次loop结束程序。
但是如果在第二次遍历中,修改$list中任意元素的值:
$list = [1, 2, 3];
// $v1 是引用
foreach ($list as &$v1) {
foreach ($list as $v2) {
// 修改任意位置的值,不一定是0
$list[0] = 1;
echo 'loop';
}
}
这段代码就会进行死循环,调试发现在死循环的情况下外面一层的foreach的key始终是0。为什么会这样呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
foreach 和 引用 使用不正确导致的,使用完了要销毁.
https://segmentfault.com/a/11...
注意:PHP不同版本foreach机制有可能不一样,比如5和7的机制就不太一样