一旦满足条件,如何突破foreach?
Posted
技术标签:
【中文标题】一旦满足条件,如何突破foreach?【英文标题】:How to break out of a foreach once a condition is met? 【发布时间】:2013-08-03 10:51:27 【问题描述】:我有一种情况,在处理对象时,我通常使用 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?
【问题讨论】:
你的意思是break;
? php.net/manual/en/control-structures.break.php
可以在 foreach 中使用 break 吗?我在 switch/case 和 while 中看到它,但是 break 在 foreach 中起作用吗?如果是这样,以这种方式使用 break 是一种很好的编程风格吗?
【参考方案1】:
来自 PHP 文档:
break
结束当前 for、foreach、while、do-while 或 switch 结构的执行。
是的,您可以使用它来退出 foreach 循环。
【讨论】:
哇,谢谢!一直以来,我只将它与 switch/case 一起使用。【参考方案2】:在 if 条件中使用break
语句:
if ($small_object->TIME == $sought_time)
break;
break
语句将跳出循环。
【讨论】:
以上是关于一旦满足条件,如何突破foreach?的主要内容,如果未能解决你的问题,请参考以下文章
一旦满足某些条件,如何立即重新加载 UICollectionView 单元格
JavaScript--遍历数组的三种方法map()forEach()filter() & 确认数组元素是否满足某种条件( some() & every() )