【问题标题】:php - Nested Loop, Break Inner Loops and Continue The Main Loopphp - 嵌套循环,打破内循环并继续主循环
【发布时间】:2015-12-05 18:41:11
【问题描述】:

我有以下循环,当内部循环内的检查满足条件时,我想continue while 循环。我找到了一个解决方案here我在下面的例子中应用了这个),但它适用于c#

    $continue = false;
    while($something) {

       foreach($array as $value) {
        if($ok) {
          $continue = true;
           break;
           // continue the while loop
        }

           foreach($value as $val) {
              if($ok) {
              $continue = true;
              break 2;
              // continue the while loop
              }
           }
       }

      if($continue == true) {
          continue;
      }
    }

当内部循环已经被break-ed out 时,PHP 是否有自己构建的方式来continue 主循环?

【问题讨论】:

    标签: php loops nested break continue


    【解决方案1】:

    在阅读了对这个问题的评论(被作者删除)并做了一些研究后,我发现continue也有参数,就像break一样。我们可以像这样将数字添加到continue

    while($something) {
    
       foreach($array as $value) {
        if($ok) {
           continue 2;
           // continue the while loop
        }
    
           foreach($value as $val) {
              if($ok) {
              continue 3;
              // continue the while loop
              }
           }
       }
    }
    

    【讨论】:

      【解决方案2】:

      我认为,在您处理完完整的内部 foreach 之前,您不会运行 continue,因此它是无关紧要的。你需要在原地执行continue,而不是等到循环结束。

      把代码改成这个

      while($something) {
      
          foreach($array as $value) {
              if($ok) {
                  continue;    // start next foreach($array as $value)
              }
      
              foreach($value as $val) {
                  if($ok) {
                     break 2;    // terminate this loop and start next foreach($array as $value)
                  }
              }
          }
      
      }
      

      回复:您的评论

      while($something) {
      
          if($somevalue) {
              // stop this iteration
              // and start again at iteration + 1
              continue;    
          }
      
      
      }
      

      【讨论】:

      • 真正的情况只是找到一个值并进行while循环的下一次迭代。所以我就这样做了。 continue 循环中的 continue 键的评论对我来说似乎告诉我它正在继续 while 循环。是这样吗?
      • 不,continue 只是从下一次迭代开始使用它的循环
      • 查看您的评论的附加信息。我希望这就是你的意思!
      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 2015-04-16
      • 2012-01-19
      • 2014-06-28
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      相关资源
      最近更新 更多