2011-09-02 18 views
13

ho bisogno di usare l'interruzione qui o arresterà il ciclo e soltanto restituirà una volta?PHP - Break after return?

for($i = 0; $i < 5; $i ++) { 
    if($var[$i] === '') return false; 
    // break; 
} 

Grazie!

risposta

12

Viene eseguito solo una volta, interrompe il ciclo e esce dalla funzione/metodo.

Si potrebbe obiettare che questo è uno stile negativo. È molto facile trascurare in seguito lo return, il che non è corretto per il debug e la manutenzione.

Utilizzando break potrebbe essere più pulito:

for($i = 0; $i < 5; $i ++) { 
    if($var[$i] === '') 
    { set_some_condition; 
     break; 
    } 
} 

if (some_condition) 
return; 
7

Se si utilizza return, la funzione (o intero script) restituirà - tutto il codice dopo che non sarà eseguito. Quindi, per rispondere alla tua domanda: uno break non è richiesto qui. Tuttavia, se lo break non è stato commentato qui, il ciclo si sarebbe fermato dopo un'iterazione. Questo perché l'istruzione if non utilizza le parentesi graffe ({ ... }) in modo che copra solo l'istruzione return (in altre parole: lo break nell'esempio viene sempre eseguito).

2

Aggiornamento:

PHP 7 richiede un return. A break; non è necessario perché il ciclo termina su return.

A break; viene solitamente utilizzato in uno switch o in un loop ogni volta che si trova l'elemento necessario.

Esempio:

$items = ['a' , 'b' , 'c']; 

foreach($items as $item) 
{ 
    if($item == 'a') 
    { 
     return true; // the foreach will stop once 'a' is found and returns true. 
    } 

    return false; // if 'a' is not found, the foreach will return false. 
} 
+0

'return' funziona. Esempio semplice: '$ items = ['a', 'b', 'c']; foreach ($ articoli come articolo $) { echo $ item; if ($ item == 'a') return true; } ' – EGurelli

+1

Grazie a @EGurelli. Ho aggiunto e modificato il tuo esempio. –