Condividi
Credo che i cicli siano un elemento fondamentale per qualsiasi linguaggio di programmazione poichè consentono l’esecuzione di operazioni in maniera ripetitiva.
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
Questo costrutto, del tutto simile a quello previsto in altri linguaggi, sfrutta la parola chiave
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
Seconda alternativa. E’ un tipo di ciclo più semplice nella sua costruzione poichè la sintassi prevede solo una parola chiave
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
Come per il ciclo for, anche per il while appena descritto, non è garantito che il codice tra parentesi graffe sia eseguito almeno una volta. Qualora volessimo questo, occorrerà scegliere un’altra forma, simile al
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
Esiste un ultima alternativa e si tratta di un ciclo particolare (non disponibile in tutti i linguaggi) perchè pensato appositamente per gestire array e particolari oggetti chiamati Iteratori.
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
}
In pratica, le istruzioni nelle parentesi graffe saranno ripetute tante volte quanti sono gli elementi presenti nell’array $array_da_attraversare. Ad ogni iterazione, un valore presente nell’array sarà letto e copiato nella variabile $valore_elemento. Meglio chiarire con un esempio:
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.
Condividi