Il foreach in php
This entry was posted on November 27th, 2008 and is filed under php.
l foreach nel PHP è uno degli strumenti iterativi come il while, il while do o il for.
L’utilizzo fondamentale che se ne fa è quello di attraversare un array e compiere determinate istruzioni per ogni elemento dell’array stesso. La sintassi di un semplice ciclo foreach è la seguente:
foreach( $array as $var_temporanea ) {
//...istruzioni da eseguire
}
Il codice appena visionato quindi esegue un determinato numero di istruzioni contenute tra le {…} per ogni elemento dell’array. Il seguente codice per esempio stamperà ogni elemento dell’array a schermo:
$array = array('marco','paolo','michele');
foreach( $array as $var_temporanea ) {
echo $var_temporanea . "<br />";
}
Molto utile no? Provate ad eseguire il seguente codice, secondo voi cosa restituirà?
$array = array('marco','paolo','michele');
foreach( $array as $var_temporanea ) {
$var_temporanea = strtoupper($var_temporanea);
}
foreach( $array as $var_temporanea ) {
echo $var_temporanea."<br />";
}
Il codice attraversa una prima volta l’array e rende maiuscole tutte le lettere della variabile $var_temporanea; attraversa poi una seconda volta lo stesso array e ne stampa a schermo il contenuto. Se provate però ad eseguire il codice vedrete che stampa a schermo ancora il contenuto in minuscolo; è come se non venisse eseguito il primo foreach. Questo avviene perchè il PHP ad ogni iterazione copia il contenuto sulla variabile temporanea e lavora quindi su quella, non sui valori effettivi. E’ un pò come nel C che quando passa i parametri ad una funzione lavora sulla copia dei parametri. Fortunatamente però nella versione 5 del PHP è stata introdotta una caratteristica molto importante; il passaggio per referenza. Il seguente codice infatti permette di modificare direttamente il contenuto dei valori dell’array senza bisogno di usare un inutile ciclo for; è sufficiente anteporre il carattere & alla variabile temporanea.
$array = array('marco','paolo','michele');
foreach( $array as &$var_temporanea ) {
$var_temporanea = strtoupper($var_temporanea);
}
foreach( $array as $var_temporanea ) {
echo $var_temporanea."<br />";
}
Un altra funzione non meno importante della precedente è quella di scorrere l’array e recuperarne i valori sotto forma di coppie (chiave, valore). La sintassi è la seguente:
foreach( $array as $chiave => $valore ) {
//...istruzioni da eseguire
}
Un esempio per chiarire meglio il concetto. Il codice seguente stamperà per ogni elemento dell’array la chiave e il valore dell’elemento:
$array = array('cognome' => 'rossi', 'nome' => 'marco');
foreach( $array as $chiave => $valore ) {
echo $chiave . ':' . $valore .'<br />';
}









