如何在满足条件后退出foreach循环?

18

我有一个情况,处理一个对象时,通常使用foreach循环来遍历它,像这样:

foreach ($main_object as $key=>$small_object) {
...

}

不过,我需要在里面加入一个条件,像这样:

foreach ($main_object as $key=>$small_object) {
   if ($small_object->NAME == "whatever") {
      // We found what we need, now see if he right time.
      if ($small_object->TIME == $sought_time) {
          // We have what we need, but how can we exit this foreach loop?
      }
}

什么是更优雅的方法来完成这个任务?如果已经找到匹配项,仍然让它不断循环似乎有些浪费。或者是否有其他更好的方法来解决这个问题?可能可以使用for循环代替foreach来实现?


2
你是指 break; 吗?http://php.net/manual/zh/control-structures.break.php - Resitive
foreach循环中可以使用break吗?我在switch/case和while中看到了它,但是在foreach中break是否有效?如果有效,这种使用break的编程风格好吗? - Edward
3个回答

42

根据PHP文档:

break命令会停止当前的for、foreach、while、do-while或者switch循环结构。

因此,您可以使用它来退出foreach循环。


10

在if条件语句内使用break语句:

if ($small_object->TIME == $sought_time) {
   break;       
}

break语句将跳出循环。


-1
   $count = 0;
    ......
    ..
    ..
    ..
    ..
    ......    
    if (++$count == 5) break;

“仅有代码的答案并不是高质量的答案”。虽然这段代码可能很有用,但您可以通过解释它为什么有效、如何有效、何时应该使用以及其限制是什么来改进它。请编辑您的答案,包括解释和相关文档链接。 - Stephen Ostermiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接