Nelle ultime lezioni abbiamo introdotti i cicli ed abbiamo visto come eseguirli finché una certa espressione è vera (for
, while
, do...while
) oppure finché non terminano gli elementi contenuti in un array (foreach
).
Quello che però non abbiamo detto finora è che ci sono due costrutti che consentono di interrompere un ciclo oppure di saltare il resto del ciclo corrente e riprendere l'esecuzione dalla verifica della condizione di controllo dall'inizio dell'iterazione successiva.
Stiamo parlando delle strutture di controllo break
e continue
.
Break
Il costrutto break
consente di interrompere un ciclo e di uscirne senza continuare le iterazioni rimanenti. È molto utile, ad esempio, quando si cerca un valore all'interno di un array: nel momento in cui l'elemento viene trovato non è necessario continuare con altri gli elementi. Vediamo un esempio:
$atleti = array( 'Simone', 'Josephine', 'Giuseppe', 'Gabriele' );
$posizione_di_arrivo = 0;
foreach ($atleti as $posizione => $nome) {
if ($nome == 'Josephine') {
$posizione_di_arrivo = $posizione + 1;
break;
}
}
echo "Josephine è arrivata in posizione numero " . $posizione_di_arrivo;
Nell'esempio appena proposto vogliamo visualizzare la posizione di arrivo dell'atleta Josephine
foreach
Non appena troviamo l'utente che stiamo cercando non è più necessario continuare le iterazioni per i restanti atleti ma possiamo interrompere l'esecuzione del ciclo. Per raggiungere il nostro scopo è sufficiente utilizzare la struttura di controllo break
.
Il costrutto break
è utile però anche in un'altra circostanza che abbiamo analizzato in una delle lezioni precedenti, quella relativa alla utilizzo del costrutto condizionale switch. In questo caso, infatti, è utilizzato per uscire dal costrutto nel momento in cui uno dei casi corrisponde al valore che stiamo verificando in quel momento. Vediamo anche in questo caso un esempio:
$posizione_di_arrivo = 1;
switch ($posizione_di_arrivo) {
case 1:
echo "Sei arrivato primo!";
break;
case 2:
echo "Sei arrivato secondo!";
break;
case 3:
echo "Sei arrivato terzo!";
break;
default:
echo "Spiacente, non sei sul podio!";
break;
}
Una volta che abbiamo trovato il valore corrispondente alla posizione di arrivo dell'atleta non è necessario valutare ulteriori casi dello switch
Continue
La struttura di controllo continue
è utilizzata per saltare il ciclo corrente e proseguire con le iterazioni successive previste. Vediamo un esempio per capire un po' più a fondo di cosa stiamo parlando:
for ($posizione=1; $posizione <= 10; $posizione++) {
if ($posizione % 2 == 1) {
continue;
}
echo "Il numero " . $posizione . " è un numero pari\n";
}
Nell'esempio precedente vogliamo stampare a schermo soltanto i numeri pari contenuti all'interno del ciclo for
operatore aritmetico modulo
Nel nostro esempio, quindi, nel caso in cui un valore del ciclo non è divisibile per 2, saltiamo l'iterazione e passiamo direttamente a quella successiva.