Array in PHP

21 ottobre 2016

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
        )

)

Tutte le lezioni

1 ... 27 28 29 ... 56

Se vuoi aggiornamenti su Array in PHP inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Array in PHP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy