PHP/Programmazione/Cicli

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Il ciclo (o iterazione) è una struttura di controllo (come la selezione) che permette l'esecuzione di una sequenza di una o più istruzioni fino al verificarsi di una data condizione.
In PHP, questi vengono gestiti esattamente come nel linguaggio C. Vedi C/Blocchi e funzioni/Cicli.

Il ciclo while[modifica]

Vediamo ora un altro tipo di ciclo, più semplice nella sua costruzione: il ciclo while. Questo si può considerare come una specie di if ripetuto più volte: infatti la sua sintassi prevede che alla parola chiave while segua fra parentesi la condizione da valutare e fra parentesi graffe il codice da rieseguire fino a quando tale condizione rimane vera. Vediamo con un esempio:

<?php
$variabile = 1;

while ($variabile <= 10) {

$risultato = 5 * $variabile;

print("5 * $mul = $ris<br>");

$variabile++;

}
?>

Il ciclo while non ci mette a disposizione le istruzioni per inizializzare e per incrementare il contatore, quindi dobbiamo inserire queste istruzioni nel flusso generale del codice. Mettiamo quindi l'inizializzazione prima del ciclo e l'incremento all'interno del ciclo stesso, in fondo. Anche in questa situazione il concetto fondamentale è che l'esecuzione del ciclo termina quando la condizione fra parentesi non è più verificata, quindi è possibile che il ciclo non sia eseguito mai, nel caso in cui la condizione risulti falsa fin da subito.

Il ciclo for[modifica]

Il ciclo for permette di eseguire tre operazioni in una sola riga. Prendendo l'esempio sopra del ciclo while, anziché inizializzare la variabile $variabile in una riga, mettere la condizione $variabile <= 10 in un'altra e porre l'istruzione di incremento alla fine, il ciclo for permetterà di riassumere tutto in un'unica riga:

for($variabile = 1 ; $variabile <=10 ; $variabile++ ){
 istruzioni;
}

Più generalmente:

for(expr1; expr2 ; expr3 ){
 istruzioni;
}

dove expr1 indica l'istruzione da eseguire solo la prima volta all'entrata nel ciclo, expr2 indica la condizione che, se falsa, causa l'uscita dal ciclo, expr3 indica l'istruzione da eseguire una volta eseguite tutte le istruzioni del ciclo, prima di valutare la veridicità della condizione expr2.
Tutte le espressioni expr1 expr2 expr3 possono essere composte da più istruzioni separate da virgola:

for($i=0, $k=1, $l=5; expr2 ; $i++, $k++, $l++ ){
 istruzioni;
}

bisogna porre attenzione con expr2, in quanto anche questa espressione può essere composta da più istruzioni separate da virgola, ma il risultato verrà preso solo dall'ultima di queste istruzioni.

Il ciclo foreach[modifica]

(Vedi anche la voce array)

Un tipo particolare di ciclo, non presente in C e nei linguaggi derivati, è il ciclo foreach, che si presta ad essere usato in molte situazioni.

La sintassi tipica dell'istruzione è questa:

foreach( $variabile_su_cui_iterare as $valore ) {
    istruzioni
}

Tipicamente $variabile_su_cui_iterare è un array. In questo caso il ciclo scorrerà tutti gli elementi dell'array, assegnando di volta in volta il loro valore alla variabile $valore, che potrà essere usata all'interno del corpo del ciclo.

Se dovesse essere necessario, per qualche ragione, conoscere anche la chiave dell'array a cui tale oggetto è associato, è possibile usare la sintassi

foreach( $variabile_su_cui_iterare as $chiave=>$valore ) { 
    ''istruzioni''
}

Anche se foreach è tipicamente usato per scorrere tutti gli elementi di un array può essere usato anche per scorrere tutti i membri pubblici, o comunque accessibili, di una classe.