Cicli while, do-while, for e foreach

PHP mette a disposizione diversi tipi di cicli. Un ciclo è un modo per ripetere le stesse istruzioni finché una data condizione è TRUE.

Il ciclo while

Il primo tipo, il più semplice, è  while:

while(condizione) { istruzioni }

Questo ciclo esegue le istruzioni finché la condizione principale è TRUE. Il suo valore viene controllato ad ogni iterazione e, non appena la condizione diventa FALSE, si esce dal ciclo. Attenzione: se prima di entrare nel ciclo, la condizione è già FALSE, il ciclo non verrà eseguito affatto.

Questo esempio può essere letto così: finché la variabile $i è minore o uguale a 10, incrementa la variabile $i. Ad ogni iterazione il valore di $i, quindi, cambia. Alla prima iterazione vale 1, perché l’abbiamo inizializzata fuori dal ciclo, alla seconda iterazione vale 2, alla terza 3, etc.

Questo esempio è un po’ più complesso, vediamo come funziona. Innanzitutto assegniamo TRUE alla variabile $a, in modo che la condizione sia vera e possiamo così entrare nel ciclo. Ad ogni iterazione assegniamo un diverso valore a $b usando la funzione rand(), alla quale diciamo di restituire un numero casuale nell’intervallo definito, in questo caso un valore tra 1 e 9. Nel caso $b sia uguale a 5, assegnamo FALSE ad $a, ed alla prossima iterazione la condizione sarà FALSE e usciremo dal ciclo. Ciò significa che questo ciclo non ha una durata predefinita, perché non possiamo sapere dopo quante iterazioni $b sarà uguale a 5.

Il ciclo do-while

Il ciclo do-while è del tutto simile a quello while, con la sola sostanziale differenza che l’espressione è posta alla fine del ciclo. Questo vuol dire che la prima volta si entra sempre nel ciclo, quindi la prima iterazione è sempre eseguita.

In questo esempio, il ciclo viene eseguito una sola volta. La seconda iterazione non ci sarà perché la condizione ($i > 0) è falsa.

Il ciclo for

Il ciclo for è il più complesso di PHP, perché ha una sintassi particolare:

for (espressione1; espressione2; espressione3) {   istruzioni   }

L’espressione1 viene eseguita una sola volta, all’inizio del ciclo. L’espressione2, invece, viene valutata ad ogni iterazione ed il ciclo continua finché è TRUE. Infine, l’espressione3 viene eseguita alla fine di ogni iterazione. Può sembrare difficile, ma non lo è. Vediamo un esempio:

Leggiamolo così: data $i uguale 1, finché $i è minore o uguale a 10, incrementa $i di 1. Questo ciclo verrà eseguito 10 volte.

Il ciclo foreach

Per iterare attraverso tutti gli elementi contenuti in un array, PHP mette a disposizione il ciclo foreach.

Ad ogni iterazione del ciclo, $chiave e $valore conterranno i dati dell’elemento corrente. Sebbene potremmo ottenere lo stesso risultato con un ciclo for, il ciclo foreach è più semplice e veloce in quanto scorre tutto l’array, anche se non sappiamo a priori la sua grandezza.

È possibile usare una forma più breve, che non ci fa accedere alla chiave, ma soltanto al valore.

Interrompere un ciclo

l’istruzione break interrompe l’esecuzione di un ciclo for, foreach, while, do-while e switch. Quando lo usiamo? Pensiamo ad esempio di voler cercare un elemento all’interno di un array e di uscire dal ciclo appena lo troviamo, senza continuare ad iterare tutti gli elementi.