Possiamo descrivere un array come una matrice matematica. In termini più semplici può essere considerato una collezione di elementi ognuno identificato da un indice; gli indici di un array possono essere numerici o stringhe. Gli elementi dell'array possono contenere al proprio interno qualsiasi tipo di dato, compresi oggetti o altri array.
Un array può essere definito in due modi equivalenti:
$array = array();
$array = [];
I due esempi si equivalgono: abbiamo definito una variabile $array
assegnandole un array vuoto. Possiamo però inizializzarlo con dei valori definiti al suo interno:
$frutti = array('banana', 'pesca', 'lampone');
$frutti = ['banana', 'pesca', 'lampone'];
Anche in questo caso i due esempi si equivalgono. In ogni momento possiamo visualizzare il contenuto di un array con la funzione print_r()
, utile in caso di debug:
$frutti = ['banana', 'pesca', 'lampone'];
print_r($frutti);
L'esempio restituirà un output come il seguente:
Array
(
[0] => banana
[1] => pesca
[2] => lampone
)
Un array è quindi un contenitore di elementi contraddistinti da un indice. Se l'indice non viene esplicitato di default è di tipo numerico 0-based
. 0-based
sta ad indicare che l'indice dell'array inizierà da 0 anziché da 1. Come abbiamo potuto vedere nell'output dell'esempio precedente, il primo elemento dell'array (banana
) possedeva infatti l'indice con valore 0.
Nel caso di array con indice numerico è possibile accedere ai singoli elementi attraverso il proprio indice:
$frutti = ['banana', 'pesca', 'lampone'];
echo "Il mio frutto preferito è il " . $frutti[2];
L'esempio stamperà Il mio frutto preferito è il lampone
perché ho deciso di stampare il terzo (indice 2 partendo da 0) elemento dell'array.
Array associativo
Un altro modo molto di utilizzare gli array è quello di sfruttare gli indici come stringhe anziché come valore numerico:
$annoDiNascita = [
'Simone' => '1986',
'Gabriele' => '1991',
'Giuseppe' => '1992',
'Renato' => '1988'
];
Nell'array appena definito ogni elemento è caratterizzato da una coppia chiave -> valore
in cui la chiave (o indice) è il nome di una persona e il valore è il suo anno di nascita. Supponiamo di voler stampare la data di nascita di uno degli utenti, possiamo accedere al suo valore in questo modo:
echo "L'anno di nascita di Gabriele è " . $annoDiNascita['Gabriele'];
Come per gli indici numerici è sufficiente indicare l'indice tra parentesi quadre per accedere al valore di un elemento. Usando la funzione print_r()
sull'array definito in precedenza, eseguendo quindi il comando print_r($annoDiNascita);
otterremo il seguente output:
Array
(
[Simone] => 1986
[Gabriele] => 1991
[Giuseppe] => 1992
[Renato] => 1988
)
Un array può contenere ulteriori array, in questo caso potremmo avere una situazione come la seguente:
$partecipanti = [
'Simone' => [
'anno' => '1986',
'sesso' => 'M',
'email' => 'test@notreal.com'
],
'Gabriele' => [
'anno' => '1991',
'sesso' => 'M',
'email' => 'test2@notreal.com'
],
'Josephine' => [
'anno' => '1985',
'sesso' => 'F',
'email' => 'test3@notreal.com'
],
];
Nell'esempio abbiamo un array con chiavi contenenti i nomi degli utenti. Il valore degli elementi dell'array è un ulteriore sotto-array contenente le proprietà dell'utente: anno di nascita, sesso e email. In questo caso per accedere ad un valore specifico dell'array possiamo usare la sintassi:
echo 'La mail di Josephine è ' . $partecipanti['Josephine']['email'];
Richiamando print_r()
sull'array avremo in output:
Array
(
[Simone] => Array
(
[anno] => 1986
[sesso] => M
[email] => test@notreal.com
)
[Gabriele] => Array
(
[anno] => 1991
[sesso] => M
[email] => test2@notreal.com
)
[Josephine] => Array
(
[anno] => 1985
[sesso] => F
[email] => test3@notreal.com
)
)
Aggiungere o modificare il valore di un elemento
Nello stesso modo in cui possiamo accedere al contenuto di un elemento di un array possiamo anche modificarne il valore. Quindi riprendendo l'array $partecipanti
, supponendo di voler modificare la mail di uno degli utenti possiamo operare in questo modo:
$partecipanti['Simone']['email'] = 'valid@email.com'
Lanciando print_r()
dopo la modifica l'output sarà:
Array
(
[Simone] => Array
(
[anno] => 1986
[sesso] => M
[email] => valid@email.com
)
[Gabriele] => Array
(
[anno] => 1991
[sesso] => M
[email] => test2@notreal.com
)
[Josephine] => Array
(
[anno] => 1985
[sesso] => F
[email] => test3@notreal.com
)
)
Nel caso in cui volessimo aggiungere un nuovo partecipante possiamo utilizzare la sintassi:
$partecipanti['Giuseppe'] = [
'anno' => 1992,
'sesso' => 'M',
'email' => 'giuseppe@test.com'
];
E' sufficiente richiamare l'array indicandogli il nuovo indice ed il valore che conterrà. Richiamando print_r()
sull'array avremo:
Array
(
[Simone] => Array
(
[anno] => 1986
[sesso] => M
[email] => valid@email.com
)
[Gabriele] => Array
(
[anno] => 1991
[sesso] => M
[email] => test2@notreal.com
)
[Josephine] => Array
(
[anno] => 1985
[sesso] => F
[email] => test3@notreal.com
)
[Giuseppe] => Array
(
[anno] => 1992
[sesso] => M
[email] => giuseppe@test.com
)
)