PHP mette a disposizione del programmatore innumerevoli funzioni per la gestione delle variabili mantenute in
formato array che permette di avere un elenco di valori organizzati come chiave -> valore.
Innanzitutto per creare una struttura dati di questo tipo si utilizza
array()
ad esempio per creare una piccola rubrica $rubrica possiamo procedere in questo modo:
$rubrica = array (
"gino" => "0123456789",
"lino" => "987654321",
"tino" => "135792468");
Si noti l'utilizzo della sintassi indice => valore per associare ad un particolare indice
(numerico o stringa) un particolare valore.
Nel caso venga omesso l'indice allora i valori saranno indicizzati tramite una valore numerico incrementale,
si noti che in tale caso l'indice partirà da 0
Molto utile per verificare il valore degli array (e non solo) è la funzione
print_r ($variabile)
che restituisce in output una versione "leggibile" dell'array
Per ottenere un nuovo array con solamente gli indici dell'array iniziale:
array_keys($array)
tornando al nostro esempio l'istruzione
print_r (array_keys($rubrica))
avrà come risultato
Array
(
[0] => gino
[1] => lino
[2] => tino
)
In modo analogo si utilizza
array_values($array)
per avere un nuovo array in cui ci saranno gli stessi valori dell'originale ma indicizzati numericamente.
Quindi
print_r (array_values($rubrica))
ci mostrerà
Array
(
[0] => 0123456789
[1] => 987654321
[2] => 135792468
)
Nel caso ci serva solo verificare che il particolare indice sia presente nell'array, invece che scorrerlo
per intero, si può utilizzare la funzione
array_key_exists($indice, $array)
che ci restituirà TRUE nel caso in cui $indice sia presente come chiave in $array.
Per effettuare operazioni su ogni valore dell'array possiamo usare un semplice ciclo while
associato alla funzione
each($array)
ad esempio
while (list ($nome, $telefono) = each ($rubrica)
{
print "$nome ha telefono $telefono
";
}
ci mostrerà l'elenco completo presente nella nostra rubrica. Da notare come, prima di effettuare una eventuale
nuova lettura dell'array sia necessario riportare il puntatore al primo indice del nostro array, questo avviene utilizzando
la funzione
reset()
che restituisce anche il primo valore dell'array.
Le classiche funzioni POP e PUSH utilizzabili nella gestione di array come stack, cioè come una coda LIFO, sono
array_pop($array)
che estrae e restituisce l'ultimo valore di $array, riducendone quindi la lunghezza e
array_push($array, $elemento)
che aumenta la lunghezza di $array mettendovi in cima $elemento
Questo può esssere verificato contando gli elementi presenti nel nostro $array, facciamolo con
count($array)
oppure sizeof($array)
che ritornano il numero di elementi presenti nell'array oppure 1 se la variabile passata non è un array oppure 0 nel caso di
count(NULL)
Questa veloce panoramica si chiude con le funzioni dedicate all'ordinamento degli array:
sort($array, $flag)
che ridispone gli elementi dell'array dal più piccolo al più grande, questo avviene ridefinendo gli indici,
attenzione quindi al fatto che gli indici originali verranno persi, tornando al nostro esempio
sort($rubrica);
print_r ($rubrica);
avrà come risultato;
Array
(
[0] => 0123456789
[1] => 135792468
[2] => 987654321
)
è possibile definire la modalità di comparazione fra gli elementi tramite l'impostazione di $flag
sort($array, SORT_REGULAR): default, vengono comparati in modo normale
sort($array, SORT_REGULAR): default, vengono comparati in modo numerico
sort($array, SORT_REGULAR): default, vengono prima convertiti in stringhe e poi comparati
rsort($array, $flag)
reverse sort si comporta come sort solo che gli elementi verrano disposti in ordine inverso
asort($array, $flag)
e arsort($array, $flag)
sono le funzioni di ordinamento che permettono di mantenere l'associazione del valore con l'indice originale
asort($rubrica);
print_r ($rubrica);
avrà come risultato;
Array
(
[gino] => 0123456789
[tino] => 135792468
[lino] => 987654321
)
--> array_map()
--> get_object_vars
Riferimenti, esempi e teoria sulle funzioni che PHP fornisce
flag di ordinamento
è possibile definire la modalità di comparazione fra gli elementi tramite l'impostazione di $flag
sort($array, SORT_REGULAR): default, vengono comparati in modo normale
sort($array, SORT_REGULAR): default, vengono comparati in modo numerico
sort($array, SORT_REGULAR): default, vengono prima convertiti in stringhe e poi comparati
ma la costante e' sempre la stessa!?