2013-08-02 13 views
11

Mam sytuacji gdzie, kiedy do czynienia z obiektem I zazwyczaj używa foreach pętli nim tak:Jak wyjść z foreach po spełnieniu warunku?

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

} 

Jednak muszę umieścić warunkowa tam tak:

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

Jaki jest elegancki sposób na zrobienie tego? Wydaje się, że marnotrawstwo to powoduje, że nie przestawia się, jeśli zostanie znaleziony. Czy jest inne podejście do tego, które jest lepsze? Możliwe użycie zamiast zamiast foreach?

+2

Masz na myśli 'break;'? http://php.net/manual/en/control-structures.break.php – Resitive

+0

Czy jednak break może być użyty w foreach? Widzę to w przełączniku/case i z czasem, ale czy łamie pracę w foreach? Jeśli tak, to czy jest to dobry styl programowania, który można wykorzystać w ten sposób? – Edward

Odpowiedz

31

Z dokumentacji PHP:

break kończy wykonywanie bieżącego dla, foreach, while, do-while lub przełącznika strukturę.

Tak, możesz go użyć, aby wydostać się z pętli foreach.

+0

Wow, dzięki! Cały czas używam go tylko z przełącznikiem/obudową. – Edward

7

Użyj oświadczenie break wewnątrz jeśli warunek:

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

break oświadczenie będzie wyrwać się z pętli.

Powiązane problemy