36 Array2

Fino ad ora si è imparato ad usare in modo semplice gli array richiamando il numero della chiave di ricerca, cioè il numero della posizione corrispondente $Array[0, 1, 2, …].

Molto utile invece usare un array di tipo associativo che ci permetterà di richiamare un nome, nettamente più facile da ricordare. Per far ciò bisogna associare ad ogni elemento un nome chiave che riporta ad essi:

$giorniMese = array('Gennaio'=>31, 'Febbraio'=>28, 'FebbraioBisestile'=>29, 'Marzo'=>31);

Quindi all’indice etichetta (‘Gennaio’) corrisponderà (=>) il suo valore (31). Per richiamarlo basterà invocare l’array con il suo indice associativo:

 echo $giorniMese['Gennaio'];

L’ array con indice numerico è un caso particolare di quello associativo, infatti:

 $giorniMese2 = array(31,28,29,31);
 echo $giorniMese2['0'];

Posso infatti stampare il valore dell’indice 0 come se fosse una chiave associativa, quindi con gli apici. $giorniMese2[‘0’] è uguale a $giorniMese2[0] . Il tentativo di accedere ad una chiave che non esiste echo $giorniMese2[‘Maggio’]; o ad un indice che non esiste echo $giorniMese2[5]; porta allo stesso errore, con una piccola sfumatura nel primo caso una chiave mancata (Undefined index) o nel secondo un indice numerico non trovato (Undefined offset).

Posso anche associare un indice di un array direttamente:

$giorniMese3[4] = 30;
$giorniMese4['Aprile'] = 30;

e posso associare una chiave numerica, anche se le precedenti non lo sono.

Se si volesse aggiungere, man mano, un’associazione ad un array, una volta definito il primo indice $hobby[0] = “Calcio”; basterà inserire i successivi senza specificare nessun indice $hobby[] = “Musica”; e verranno inseriti in modo incrementale automaticamente (aggiunge elemento dopo l’ultimo inserito).

Un altro modo (più macchinoso) è quello di utilizzare un conteggio (count)

$hobby[count($hobby)] = “Pesca”;

Un sinonimo della funzione count è sizeof, fa la stessa identica cosa.

Esiste una comoda funzione che riempie un array con una serie di numeri compresi tra un minimo e un massimo:

$numeriProgressivi = range(1, 1000);

Ecco un semplice ciclo per stamparli:

$numeriProgressivi = range(1, 1000);
foreach ($numeriProgressivi as $numero)
 echo $numero . "<br />";