'How to break out of a foreach once a condition is met?

I have a situation where when dealing with an object I generally use a foreach to loop through it like this:

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

}

However, I need to put a conditional in there like this:

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?
      }
}

What is the elegant way to do this? It seems wasteful to have it keep looping through if it's found a match. Or is there another approach to do this that is better? Possibly using for instead of foreach?



Solution 1:[1]

From PHP documentation:

break ends execution of the current for, foreach, while, do-while or switch structure.

So yes, you can use it to get out of the foreach loop.

Solution 2:[2]

Use the break statement inside the if condition:

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

break statement will break out of the loop.

Solution 3:[3]

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ciruvan
Solution 2 eMpTy43
Solution 3 lookly Dev