Cicli e iterazioni in php: for e foreach

Nello sviluppo software qualsiasi ambiente si utilizzi ci si trova spesso a ripetere un determinato compito per più volte (iterazioni). Ad ogni ciclo si eseguono le stesse istruzioni, quello che cambia sono i dati su cui agiscono tali istruzioni.

In un sito wordpress ad esempio vi sono delle pagine in cui sono elencati gli articoli di una categoria e per ognuno viene mostrato un titolo, un testo ed una data differenti ma il codice che li visualizza è sempre lo stesso.

Diversi sono i costrutti che permettono di iterare più volte un gruppo di istruzioni ad esempio for e foreach.

Il ciclo For

Il ciclo for viene comunemente usato per realizzare delle iterazioni basate su un indice numerico. Questo indice viene prima impostato ad un valore iniziale, di solito 0 o 1. Ad ogni iterazione viene poi incrementato fino al raggiungimento di un valore finale, evento che determina l’interruzione del ciclo.

La sintassi per realizzare questo ciclo è composta da 3 argomenti (anche se in realtà non si può parlare di argomenti non trattandosi di una funzione) : Creazione della variabile, Condizione per far terminare il ciclo, Incremento o decremento della variabile.

for( dichiarazione della variabile , condizione per terminare il ciclo , aumento/decremento della variabile)
{
codice da eseguire
}

vediamo un esempio :

for ($i=1 ; $i < = 10 ; $i++)
{
$quadrato = $i*$i;
echo "Il quadrato di $i è $quadrato \n";
}

In realtà i tre campi non devono necessariamente essere legati : nella parte dichiarativa si possono inserire anche dichiarazioni di altre variabili , nella parte centrale si possono inserire controlli che non dipendono da queste variabili (ad esempio controlli su altri tipi di eventi) e stessa cosa per la parte di incremento.

Ad esempio

for ($i=1, $p=3 ; $i < = 10 ; $i++,$p+=$i)
{
$quadrato = $i*$i;
echo "Il quadrato di $i è $quadrato \n";
echo "La variabile p vale : ".$p;
}

è ancora un codice valido.

Il ciclo foreach

Il ciclo foreach è stato pensato specificatamente per essere utilizzato per la gestione degli array e di tutte quelle strutture composte da più elementi delle stesso tipo : infatti il ciclo si ripeterà tante volte quanti sono il numero di elementi che compone un array .

La sua sintassi è molto semplice:

foreach ($array_da_attraversare as $valore_elemento)
{
// istruzioni da iterare
}

Il foreach richiede come unico parametro l’array che si intende attraversare, mentre il secondo parametro sarà la variabile che dovrà, ad ogni ciclo, contenere il valore dell’elemento dell’array.

L’azione contenuta nelle parentesi graffe verrà ripetuta per quanti sono gli elementi dell’array.

Da notare che a differenza del ciclo for in questo caso non viene indicato quante volte il ciclo dovrà ripetersi: infatti il ciclo si ripeterà tante volte quanti sono gli elementi dell’array.

Vediamone un esempio:

$colori = array('bianco','rosso','verde','blu','giallo','nero');
 
foreach ($colori as $colore)
{
    echo $colore , '
';
}

Un’ altro modo di utilizzarlo è creando una variabile che conterrà l’indice preso in considerazione.

foreach(array as indice => variabile) {
    codice da eseguire
}

In questo caso appunto la variabile conterrà l’elemento corrente dell’array mentre indice ne conterrà appunto l’indice.
Vediamo anche un esempio di questa notazione

foreach ($arr as $indice => $var) {
    $numero = $indice+1;
    echo "Studente ".$numero.": ".$var."
";
}

In cui viene visualizzato sia l’elenco degli elementi dell’array insieme all’indice stesso dell’array.

Altre informazioni su Php possono essere trovate sui seguenti testi

PHP5 – Guida Completa,

PHP. Le tecniche per scrivere il codice migliore

PHP 6: Guida per lo sviluppatore



About Mauro De Filippis 702 Articles
Laureato in Ingegneria Informatica nel 2008 presso l'Università degli Studi di Lecce con una tesi in Processi di Produzione Robotizzati dal titolo "Integrazione delle tecniche di progettazione del ciclo di lavorazione con programmazione della produzione”. Le mie attività principali sono : sviluppo di applicativi ANSI C per terminali POS basati su processori ARM Risc 32Bit con 2-4 MB di Ram (progettazione, sviluppo e test delle applicazioni ) sviluppo in ambiente .NET sviluppo Web in ambiente PHP, ASP Installazione, progettazione, utilizzo di Db MS SQL Server, Mysql, Acces , Oracle Da anni mi occupo di CMS Open Source, in particolare di Joomla e Wordpress. Mia è la Guida Wordpress 3.5, la Guida Joomla 2.5 , il Corso online Joomla! 2.5 ed il Corso online Wordpress Mi occupo anche di LMS in particolare di Moodle e Docebo. Google+ by Mauro De Filippis

Be the first to comment

Rispondi