PHP, gli array
21/10/2011Gli array sono contenitori dove memorizzare dati, con un contatore univoco per ogni dato inserito.
Possiamo 'visualizzare' un array immaginando tabella con due colonne, nella prima un numero che partendo da zero si incrementa un'unità per riga, nella seconda colonna il dato memorizzato.
I numeratori possono essere numerici o letterali senza obbligo sequenziale.
Esempio di costruzione di un array:
$mese = array('gennaio','febbraio','marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre');
O, in alternativa,
$mese[0] = 'gennaio';
$mese[2] = 'febbraio';
$mese[3] = 'marzo';
etc etc
Se non dichiarato diversamente gli array memorizzano i dati a partire dal contatore zero.
Per associare una chiave imponendone il valore la sintassi dovrà essere:
$mese = array(1 => 'gennaio','febbraio','marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre');
Con i simboli => associamo a gennaio il numero 1 e di conseguenza i valori successivi saranno numerati 2, 3, 4 etc etc.
Dopo aver costruito un array è comunque possibile incrementarlo con altri valori con l'istruzione:
$mese[] = 'january';
Per sostituire un valore l'istruzione sarà:
$mese[1] = 'january';
Se incrementiamo un valore assegnando un numero che lascia dei 'vuoti' (nell'ultimo array di esempio l'ultimo mese dicembre corrispondeva al 12)
$mese[15] = 'march';
i nuovi valori senza specificare il numero partiranno dal numeratore trovato più alto e $mese[13] $mese[14] risulteranno inesistenti.
Negli array si possono definire anche numeratori letterali.
$mese['maggio_inglese'] = 'may';
Il numeratore letterale non incide sull'incremento dei numeratori numerici!
Gli array possono essere creati anche usando le coppie chiave-valore:
$mese = array ("january" => "gennaio", "february" => "febbraio", "march" => "marzo");
Per eliminare gli elementi contenuti in un array la funzione da usare è unset():
unset($mese[15]);
elimina l'elemento 15 dell'array $mese.
Come contare e visualizzare i contenuti di un array?
Ecco un codice di esempio:
$mese = array('gennaio','febbraio','marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre');
$lunghezza= count($mese);
echo "L'array mese contiene $lunghezza valori <br />";
echo "I valori memorizzati sono... <br />";
for
($contatore=0; $contatore < $lunghezza; $contatore++)
{
echo "$mese[$contatore] <br />";
}
oppure, alternative al ciclo for sono il ciclo while o il ciclo foreach:
while(list (, $valore) = each ($mese)){
echo "$valore <br />";
}
foreach ($mese as $valore) {
echo "$valore <br />";
}
Come estrarre elementi random da un array? Nel codice di esempio l'istruzione array_rand estrae 2 valori random dall'array $mese:
$chiavi = array_rand($mese, 2);
echo $mese[$chiavi[0]] . "<br />";
echo $mese[$chiavi[1]] . "<br />";
Come ordinare un array? Nel codice di esempio l'istruzione sort ordina l'array $mese:
sort($mese);
Attenzione a non ordinare array con tipi di dati (numerici, stringhe...) diversi!
Come ordinare un array in modo inverso? Nel codice di esempio l'istruzione array_reverse ordina l'array $mese in modo contrario:
$nuovoarray = array_reverse($mese);
Infine segnalo l'istruzione print_r che consente di stampare il contenuto degli array in modo molto utile per eseguire un veloce debug:
print_r($mese);