Precedentemente abbiamo accennato il tipo di dato array con il seguente esempio:
$colori = array('bianco', 'nero', 'giallo', 'verde', 'rosso');
echo $colori[2]; //stampa 'giallo'
$colori[] = 'blu';
$colori
,
che avrà l'indice 5. Questa sintassi infatti può essere "tradotta" come
"aggiungi un elemento in fondo all'array $colori". Come abbiamo detto,
questa sintassi è valida anche per definire un array, in alternativa a
quella usata prima: infatti, se ipotizziamo che l'array $colori
non fosse ancora definito, questa istruzione lo avrebbe definito
creando l'elemento con indice 0. È naturalmente possibile anche indicare
direttamente l'indice, anche in modo non consecutivo:
$colori[3] = 'arancio'; $colori[7] = 'viola';
Ma l'argomento array non si limita a questo: infatti gli indici degli elementi non sono necessariamente numerici. Possono essere anche delle stringhe:
$persona['nome'] = 'Mario';
$persona
,
creando un elemento la cui chiave è 'nome' ed il cui valore è 'Mario'. È
da ricordare che le chiavi numeriche ed associative possono coesistere
nello stesso array. Vediamo un esempio banale, ipotizzando la formazione
di una squadra di calcio:
$formazione[1] ='Buffon'; $formazione[2] ='Panucci'; $formazione[3] ='Nesta'; $formazione[4] ='Cannavaro'; $formazione[5] ='Coco'; $formazione[6] ='Ambrosini'; $formazione[7] ='Tacchinardi'; $formazione[8] ='Perrotta'; $formazione[9] ='Totti'; $formazione[10] ='Inzaghi'; $formazione[11] ='Vieri'; $formazione['ct'] = 'Trapattoni';
$formazione = array(1 => 'Buffon', 'Panucci', 'Nesta',
'Cannavaro', 'Coco', 'Ambrosini', 'Tacchinardi', 'Perrotta', 'Totti',
'Inzaghi', 'Vieri', 'ct' => 'Trapattoni');
=>
e dal valore
dell'elemento. Se non avessimo indicato 1 come indice, PHP avrebbe
assegnato al primo elemento l'indice 0. Per gli elementi successivi, ci
siamo limitati ad elencare i valori, in quanto PHP, per ciascuno di
essi, crea la chiave numerica aumentando di 1 la più alta già esistente.
Quindi 'Panucci' prende l'indice 2, 'Nesta' il 3 e così via. Arrivati
all'ultimo elemento, siccome vogliamo assegnargli una chiave
associativa, siamo obbligati ad indicarla esplicitamente.
È da notare che quando abbiamo usato le chiavi associative le abbiamo indicate fra apici: ciò è necessario per mantenere la 'pulizia' del codice, in quanto, se non usassimo gli apici (come spesso si vede fare), PHP genererebbe un errore di tipo 'notice', anche se lo script funzionerebbe ugualmente (dato che il valore verrebbe convertito automaticamente in una stringa). Vediamo ora qualche esempio di creazione e stampa dei valori di un array:
$persona['nome'] = 'Mario'; //corretto
$persona[cognome] = 'Rossi'; /*funziona, ma genera un errore 'notice'*/
echo $persona['cognome']; //stampa 'Rossi': corretto
echo "ciao $persona[nome]"; /*stampa 'ciao Mario': corretto (niente apici fra virgolette)*/
echo "ciao $persona['nome']"; //NON FUNZIONA, GENERA ERRORE
echo "ciao {$persona['nome']}"; /*corretto: per usare gli apici fra virgolette dobbiamo comprendere il tutto fra parentesi graffe*/
echo "ciao " . $persona['nome']; /*corretto: come alternativa, usiamo il punto per concatenare (v. lez.10 sugli operatori)*/
$persona[cognome] = 'Rossi'; /*funziona, ma genera un errore 'notice'*/
echo $persona['cognome']; //stampa 'Rossi': corretto
echo "ciao $persona[nome]"; /*stampa 'ciao Mario': corretto (niente apici fra virgolette)*/
echo "ciao $persona['nome']"; //NON FUNZIONA, GENERA ERRORE
echo "ciao {$persona['nome']}"; /*corretto: per usare gli apici fra virgolette dobbiamo comprendere il tutto fra parentesi graffe*/
echo "ciao " . $persona['nome']; /*corretto: come alternativa, usiamo il punto per concatenare (v. lez.10 sugli operatori)*/
Un array a più dimensioni è un array nel quale uno o più elementi sono degli array a loro volta. Supponiamo di voler raccogliere in un array i dati anagrafici di più persone: per ogni persona registreremo nome, cognome, data di nascita e città di residenza
$persone = array( array('nome' => 'Mario', 'cognome' =>
'Rossi', 'data_nascita' => '1973/06/15', 'residenza' => 'Roma'),
array('nome' => 'Paolo', 'cognome' => 'Bianchi', 'data_nascita'
=> '1968/04/05', 'residenza' => 'Torino'), array('nome' =>
'Luca', 'cognome' => 'Verdi', 'data_nascita' => '1964/11/26',
'residenza' => 'Napoli'));
print $persone[0]['cognome']; // stampa 'Rossi'
print $persone[1]['residenza']; // stampa 'Torino'
print $persone[2]['nome']; // stampa 'Luca'
print $persone[0]['cognome']; // stampa 'Rossi'
print $persone[1]['residenza']; // stampa 'Torino'
print $persone[2]['nome']; // stampa 'Luca'
$persone = array( 1 => array('nome' => 'Mario Rossi',
'residenza' => 'Roma', 'ruolo' => 'impiegato'), 2 =>
array('nome' => 'Paolo Bianchi', 'data_nascita' => '1968/04/05',
'residenza' => 'Torino'), 'totale_elementi' => 2);
print $persone[1]['residenza']; // stampa 'Roma'
print $persone['totale_elementi']; // stampa '2'
print $persone[1]['residenza']; // stampa 'Roma'
print $persone['totale_elementi']; // stampa '2'
0 commenti:
Posta un commento
Proponi un'idea, segnalaci un problema.
Entra a far parte di CS3, pubblica i tuoi articoli.
Scrivi un commento!