2013-08-02 16 views
11

Ho una situazione in cui quando si tratta di un oggetto che di solito uso un foreach per scorrere in questo modo:Come uscire da un foreach una volta soddisfatta una condizione?

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

} 

Tuttavia, ho bisogno di mettere un condizionale in là come questo:

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

Qual è il modo elegante per farlo? Sembra inutile che continui a scorrere se trova una corrispondenza. O c'è un altro approccio per fare ciò che è meglio? Forse usando for invece di foreach?

+2

Vuoi dire 'pausa;'? http://php.net/manual/en/control-structures.break.php – Resitive

+0

Si può rompere in un foreach? Lo vedo in switch/case e con while, ma interrompe il lavoro in un foreach? Se è così, è un buon stile di programmazione usare break in questo modo? – Edward

risposta

31

Dalla documentazione PHP:

break estremità esecuzione della corrente, foreach, while do-while o switch struttura.

Quindi sì, è possibile utilizzarlo per uscire dal ciclo foreach.

+0

Wow, grazie! Per tutto questo tempo l'ho usato solo con switch/case. – Edward

7

utilizzare l'istruzione break all'interno del se la condizione:

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

break dichiarazione romperà fuori dal giro.

Problemi correlati