Corso di PHP lezione n. 10
Nel nostro viaggio nella realizzazione di siti web e pagine web client server con PHP continuiamo a palare di cicli
foreach
l’uso di foreach è indicato per gestire gli array.
Abbiamo due sintassi :
foreach($variabile_array as $value){
istruzioni
}
foreach ($variabile_array as $key=> $value){
istruzioni
}
la sintassi non richiede l’utilizzo di indici né di incrementi, infatti il costrutto
opererà su tutti gli argomenti dell’array indistintamente. Dunque questo strumento risulta comodo e versatile
quando si ha a che fare con array con chiavi particolari o non consecutive (nel caso di chiavi numeriche).
Esempio:
array_1=(1,”a”,5,”c”,”ciao”); //quindi con chiavi da 0 a 4
quindi protremmo operare sull’array in quanto possiede chiavi consecutive
ora vediamo invece questo esempio:
$array_2=(“uno”=>1,//chiave stringa value intero
“frutta”=>”mela”, //chiave stringa value stringa
5=>”cinque”,//chiave intero value stringa
40=>30/chiave intero valore intero
si supponga di non conoscere le chiavi dell’array perché assegnate dinamicamente con i classici cicli non potremmo operare invece con foreach risulta alquanto semplice.
foreach($array_2 =>$val)
{
echo “<br>valore =”,$val;
if(is_integer($val)){
echo “— e’ un intero”;
}
{
else
echo “—non e’ un intero”;
}
}
con la seconda sintassi :
foreach($array_2 $key=> $valore)
{
echo “<br> val=”. $val”;
if(is_integer($valore))
{
echo “chiave=” .$key .“ ed e intero“;
}
else{
echo“chiave=”.$key.” ed e stringa”;
}
}
altro esempio
Le istruzioni raggruppate nelle parentesi graffe verranno ripetute tante volte quanti sono gli elementi presenti nell’array $array_da_attraversare. Ad ogni iterazione verrà letto un valore presente in tale array e copiato nella variabile $valore_elemento. Vediamo un esempio:
<?php
$colori = array('bianco','rosso','verde','blu','giallo','nero');
foreach ($colori as $colore)
{
echo $colore , '<br>';
}
?>
Se vogliamo anche modificare la variabile che stiamo itercoloreando è sufficiente porre
il carattere &
prima della variabile
$colore
in modo da fare
riferimento all'indirizzo di memoria della variabile
nell'espressione del ciclo foreach per far si che ogni modifica effettuata su di essa venga in realtà effettuata sul relativo valore dell'array. L'esempio seguente è identico al precedente, tranne che per il carattere & posto a sinistra della variabile $colore. Questa volta le modifiche ai valori dell'array avranno effetto.
<?php
$colori = array('bianco','rosso','verde','blu','giallo','nero');
foreach ($colori as &$colore)
{
$colore = strtoupper($colore);
}
unset($colore);
foreach ($colori as $colore)
{
echo $colore , '<br>';
}
?>
Attenzione: l'utilizzo del carattere & fa si che alla fine del primo ciclo foreach la variabile $colore non è semplicemente una copia dell'ultimo elemento dell'array bensì è l'utlimo elemento dell'array. Per questa ragione dobbiamo "
distruggere" $colore con l'istruzione unset()
prima di riutilizzare questa variabile nel secondo ciclo.
Mostriamo adesso un u
ltima variante
,della sintassi del ciclo foreach che permette di scorrere un array e r
ecuperarne gli elementi sotto forma di coppie chiave => valore
. Ecco la struttura tipica:
foreach (
$array_da_attraversare as $chiave_elemento => $valore_elemento
)
{
// istruzioni da iterare
}
L'unica differenza è che adesso anche
le chiavi
di ciascun elemento
vengono
lette e copiate nella variabile $chiave_elemento
. Vediamo un semplice esempio:
<?php
$film = array('titolo' => 'Via col Vento', 'anno' => 1939,'regista' => 'Victor Fleming');
foreach ($film as $info => $valore)
{
echo "$info: $valore <br>\n";
}
?> Aut Ing. Antonio Vizzì ha sviluppato progetti c/c++, Php, mysql,android, iOS, realizzazione siti web ed ottimizzazione SEO, web marketing.....