PHP : Le iterazioni con il for, while, do-while e foreach
| Scritto in Php | Data 08-02-2010
0
Si tratta di una vera e propriia necessità cui ogni programmatore deve ricorrere spessissimo soprattutto dovendo elaborare e gestire enormi moli di dati.
Anche il php ha i suoi costrutti utili per iterare dati e, in relazione a cosa e come si deve elaborare, conviene utilizzare un metodo piuttosto che un altro. Ma vediamoli in dettaglio.
Ciclo For
for, seguita, fra parentesi, dalle istruzioni di definizione del ciclo. Quindi, seguono, racchuse fra parentesi graffe, tutte le istruzioni da eseguire ripetutamente fino a conclusione del ciclo.Vediamo in dettaglio le tre istruzioni fra le parentesi tonde (e separate da punto e virgola) :
- la prima viene eseguita una sola volta, all’inizio del ciclo;
- la terza viene eseguita alla fine di ogni iterazione del ciclo;
- la seconda è necessariamente una condizione che è valutata prima di ogni iterazione del ciclo: se risulta falsa, il ciclo si interrompe ed il controllo passa alle istruzioni che seguono la chiusura delle parentesi graffe. Se, logicamente, è vera, vengono eseguite le istruzioni fra parentesi graffe.
Va precisato che potrebbe accadere che tale condizione risulti falsa fin dal primo test: le istruzioni fra le parentesi graffe non verranno mai eseguite.
In sostanza si definisce un ‘contatore’ che, con la prima istruzione è inizializzato, con la seconda lo si confronta con un valore limite, con la terza lo si incrementa ad ogni ripetizione di ciclo.
Unica accortezza : evitare la classica situazione di loop ovvero in cui non si riesce mai ad uscire dal ciclo perchè la seconda condizione è sempre verificata!
Sappiate che un simile errore costringe a chiudere un programma o addirittura a spegnere la macchina, ma per fortuna, gli script PHP hanno un limite di tempo per la loro esecuzione, oltre il quale si arrestano.
Vediamo un esempio banalissimo :
che dà come risultato 01234
Era sufficiente impostare il ciclo così for ($variabile = 1; $variabile > 0; $variabile++) per avere il classico loop infinito di cui parlavo prima.
Ciclo While
while e una condizione, fra parentesi, da valutare. Inoltre, fra parentesi graffe c’è, come al solito, il codice da eseguire fino a quando la condizione resta vera. Meglio proporre l’esempio precedente per chiarire il tutto.
$variabile = 0; while ($variabile < 5) { echo $variabile; $variabile++; }
In sostanza, Il ciclo while, rispetto al for, non mette a disposizione la prima e la terza istruzione (inizializzare e incrementare il contatore). Pertanto, siamo noi a doverle prevedere nel codice come mostrato nell’esempio qui sopra.
Ciclo do-While
while, con cui siamo sicuri che il codice venga eseguito almeno una volta: si tratta del do...while
$variabile = 5; do { echo $variabile; $variabile++; } while ($variabile < 5)
Con questa sintassi, il while si trova solo alla fine e dopo il codice da ripetere. Quindi, la valutazione della condizione sarà eseguita solo dopo l’esecuzione del codice fra parentesi graffe.
In tal caso, con i tipi di cicli visti sopra, non avremmo ottenuto alcun output, mentre con l’uso del do...while ci siamo assicurati almeno una esecuzione del codice. L’esempio stamperà quindi “5″.
Ciclo Foreach
Tale ciclo ci consente di costruire un ciclo ripetuto per ogni elemento di una collezione passata come argomento. La sintassi standard è la seguente:
foreach ($array_da_scansionare as $valore_elemento) { // istruzioni da iterare }
Ad ogni ciclo, la variabile $colore assumerà il valore di un elemento presente nell’array $colori. Logicamente, potremo usare il ciclo foreach anche per effettuare una modifica ai valori contenuti nell’array.








