php4people … 13% refresh

23 maggio 2008

[fp12] foreach

Filed under: » foreach, Fondamenti di PHP », fp » Strutture di controllo — Etichette: , — ferenir @ 21:20

un avviso d\'importanza vitale A quanto pare non c’è modo di risolvere la formattazione del testo… ho provato tutti (dico tutti!) i temi disponibili su WordPress e alla fine tutto quello che ho ottenuto è una mezza-soluzione che non sempre funziona. Mi dovrà bastare fino a quando non sposterò il blog su un mio dominio (per ora è ancora troppo presto). Questa mezza soluzione mi obbliga a modificare manualmente gli script già postati… il che richiederà giorni, perché il tempo che posso dedicare al blog in questo periodo è poco. Giusto il tempo di postare nuovi articoli… poi il lavoro chiama.

Scrivendo sugli array() dicevo di una struttura di controllo ideale per lavorare le informazioni contenute in essi. Questa struttura è il ciclo foreach. La sua grammatica:

foreach ([array] AS [indice] => [informazione]){
// istruzione da eseguire
}

Tutte quelle condizioni che nel ciclo for sono visibili - come la condizione iniziale del ciclo, quella di transito e l’evento ciclico – sono sottintese nel ciclo foreach. foreach inizia dal primo indice (numerico o testuale) dell’array e continua a “percorrere” l’array fino all’ultimo indice. Quindi abbiamo:

[array] una variabile che identifica un Array(). Esempio: $array.
[chiave] una variabile a cui foreach assegna gli indici che recupera dall’array.
[informazione] una variabile a cui foreach assegna l’informazione correlati a un indice.

Prendendo a riferimento l’array di cui scrivevo qui, ecco un esempio di ciclo foreach:

<?php
// definisco l'array
$persona[0]['nome'] = "Paolo";
$persona[0]['altezza'] = 177;
$persona[0]['peso'] = 80;
$persona[1]['nome'] = "Francesca";
$persona[1]['altezza'] = 170;
$persona[1]['peso'] = 60;

// chiamo ed eseguo il ciclo foreach
foreach($persona AS $key => $value){
echo "<p>";
foreach($value AS $indice => $valore){
echo "indice => ".$key." <b> ".$indice."</b> = ".$valore."<br />";
}
echo "</p>";
}
?>

ciclo foreach in esecuzione

Sono partito dall’esempio più “difficile” volutamente. Quello che mi preme far capire è che, per quanto complesso sia un array, partendo dal primo indice si può arrivare sempre “ciclicamente” all’indice più in profondità estraendo tutte le informazioni immagazzinate nell’array.

Una volta compreso il metodo diventa facile lavorare un array, aggiungendo o cancellando informazioni a qualsiasi profondità si voglia lavorare. Ad esempio, se volessi cancellare il gruppo “Paolo”, ecco come dovrei modificare lo script precedente:

<?php
// definisco l'array
$persona[0]['nome'] = "Paolo";
$persona[0]['altezza'] = 177;
$persona[0]['peso'] = 80;
$persona[1]['nome'] = "Francesca";
$persona[1]['altezza'] = 170;
$persona[1]['peso'] = 60;

// inizializzo una variabile di controllo
$lock = "";

// chiamo ed eseguo il ciclo foreach
foreach($persona AS $key => $value){
echo "<p>";
foreach($value AS $indice => $valore){
if($valore == "Paolo"){
unset($persona[$key]);
echo "=> Cancellato l'indice ".$key." riferito al gruppo <b> ".$valore."</b><br />";
}
}
echo "</p>";
}

// pulisco gli indici vuoti dell'array
// riporto a indice 0 il puntatore dell'array
reset($persona);

// controllo quanti indici primari del tipo $persona[x] siano presenti nell'array
echo "Adesso l'array contiene ".count($persona)." indici<br />";
print_r($persona);
?>

foreach e unset

Post più vecchi »

Tema: Shocking Blue Green. Blog su WordPress.com.

Follow

Get every new post delivered to your Inbox.