|
In PHP abbiamo gli array, ovvero sequenze di elementi accedibili per indice: l'indice è un numero intero. Gli array
generici hanno anche il comportamenti degli array associativi, ovvero sono tabelle di elementi accedibili per
chiave, che è una stringa. Gli indici, sia interi che stringa, si specificano utilizzando le parentesi quadre, che seguono il
nome della variabili. Array ed array associativi sono di fatto lo stesso tipo di dato. Per creare un array è sufficiente
assegnare un elemento utilizzando l'indice. Notare che l'array si "allarga" per contenere l'elemento di indice specificato.
Per aggiungere in coda esiste una comoda sintassi: si assegna usando le parentesi quadre senza indice . Per esempio:
$a[0]="zero";
$a[1]="uno";
$a[]="due";
print "$a[0], $a[1], $a[2]";
=>zero, uno, due
Per creare un array, il modo più semplice è quindi quello di assegnare, uno per uno, gli elementi all'all'ultimo elemento
(e così non si deve specificare un indice). Un altro modo è quello di utilizzare array, come segue:
# crea e stampa un array e un array associativo
$b = array("zero", "uno", "due");
$c = array("zero" => 0, "uno" => 1, "due" => 2);
print "$b[0], $b[1], $b[2]";
=> b: zero, uno, due
print "$c[zero], $c[uno], $c[due]";
=> c: 0, 1, 2
$d["x"] = 10; $d[] = 11; print "d: $d[0], $d[x]";
=> d: 11, 10
La primitiva array crea un array indicizzato; utilizzando => si crea un array associativo, che associa ad una data
chiave il valore che lo segue. Notare che è possibile assegnare contemporaneamente ad un array sia elementi indicizzati
per indice che per stringa.
Esiste una primitiva, chiamata list, che permette di effettuare assegnamenti multipli a variabili da un array. Funziona
come segue:
$a = array("x", "y", "z");
list($b, $c, $d) = $a;
print "$b $c $d";
=> x y z
Questa funzione è particolarmente utile quando si devono estrarre informazioni da un database: il risultato di una query
viene infatti ritornato come un array, e questa primitiva è utile per estrarre i risultati. Alla fine del prossimo paragrafo,
che tratta i comando, sono mostrati i vari modi in cui è possibile scandire un array. Gli array possono essere riordinati
in vari modi, a seconda che si voglia mantenere o meno l'associazione tra chiavi e valori.
| Primitiva |
Ordinamento |
| sort() /rsort()) |
Riordina gli elementi di un array in ordine ascendente
(discendente) |
| asort()/arsort() |
Riordina gli elementi in ordine ascendente (discendente)
mantenendo l'associazione con gli indici |
| ksort()/krsort() |
Riordina gli elementi per chiave in ordine ascendente
(discendente). |
Esempio:
$a = array("3", "2", "1", "b" => "B", "c" =>"C", "a" =>"A");
sort($a);
print "sort(\$a)\n";
while( list($k, $v) = each($a)) print "$k => $v\n";
$a = array("3", "2", "1", "b" => "B", "c" =>"C", "a" =>"A");
asort($a);
print "asort(\$a)\n";
while( list($k, $v) = each($a)) print "$k => $v\n";
$a = array("3", "2", "1", "b" => "B", "c" =>"C", "a" =>"A");
ksort($a);
print "ksort(\$a)\n";
while( list($k, $v) = each($a)) print "$k => $v\n";
Risultato:
sort($a)
0 => 1
1 => 2
2 => 3
3 => A
4 => B
5 => C
asort($a)
2 => 1
1 => 2
0 => 3
a => A
b => B
c => C
ksort($a)
0 => 3
1 => 2
2 => 1
a => A
b => B
c => C
|