嵌套循环中 continue 2 和 break 的区别

difference between continue 2 and break in nested loops

我在重构一些旧代码时偶然发现了一个 continue 2 可以很容易地用 break 替换的代码。

for($rows as $i){
      for($columns as $j){
           if( Helper::unicornExists($i, $j) ){
                 //continue 2;  
                 break;
           }
      }
}

如果我们说 continue 2 使代码更复杂且难以阅读, 有什么好的理由使用它(在 2 级)嵌套循环吗?

在这个特定示例中,它似乎是同一件事,由您决定您喜欢它的方式。我可以看到保留 continue 2 的一个原因是,如果在你的项目的未来开发中,你会在内部 for 之后添加一些东西

for($rows as $i){
      for($columns as $j){
           if( Helper::unicornExists($i, $j) ){
                 //continue 2;  
                 break;
           }
      }
      echo 'done with ', $i, PHP_EOL;
}

如果独角兽确实存在,您需要考虑您的期望。您是想只跳过内部循环,这就是 break 会做的,还是您也想跳过外部循环,这就是 continue 2 会做的。