【问题标题】:difference between continue 2 and break in nested loops嵌套循环中 continue 2 和 break 之间的区别
【发布时间】:2015-02-04 10:00:24
【问题描述】:

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

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

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

【问题讨论】:

  • 只是一个 break 不会跳出 2 个嵌套循环,它只会跳出 1 个循环。你需要break 2 来破坏它们。
  • 在这种情况下是一样的

标签: php loops break continue


【解决方案1】:

在这个特定的示例中,它似乎是同一件事,由你决定你喜欢它的方式。我可以看到保留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 会做的事情。

【讨论】:

  • 我想补充一点,如果您在内循环之后的外循环中没有任何代码,continue 2 将更具可读性,因为它可以更好地传达您的意图。 break 传达您想要停止或突破某事的信息,而 continue n 传达您想要跳到下一个迭代的信息,这就是这里的意图。
猜你喜欢
  • 2010-10-02
  • 2021-08-16
  • 2016-08-02
  • 2019-04-21
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
相关资源
最近更新 更多