Array in PHP

Array

Array con indice numerico

<?php
// definizione esplicita
$colori = array("rosso", "verde", "blu");
$colori[] = "viola";        // aggiunge un elemento in coda

$n = count($colori);        // numero di elementi: 4

// scansione con for
for ($i = 0; $i < $n; $i++)
    print "$colori[$i] ";

// scansione con foreach
foreach ($colori as $colore)
    print "$colore ";

// definizione implicita, elemento per elemento
$pari[0] = 2;
$pari[1] = 4;
$pari[2] = 6;
?>

Osservazioni

  • Gli indici partono da 0
  • $array[] = valore; aggiunge un elemento alla fine dell'array
  • count($array) restituisce il numero di elementi
  • foreach scorre tutti gli elementi senza gestire l'indice
  • Dal PHP 5.4 si può usare anche la sintassi breve: $primi = [2, 3, 5, 7, 11];

Array associativi

Gli elementi sono individuati da una chiave (es. una stringa) invece che da un indice numerico:

<?php
$province_piemonte = array(
    "AL" => 440481,  "AT" => 221871,  "BI" => 185701,
    "CN" => 592782,  "NO" => 372109,  "TO" => 2306881,
    "VB" => 163123,  "VC" => 179484
);

$totale_abitanti = 0;
//foreach ($array as $chiave => $valore) fornisce a ogni giro sia la chiave che il valore
foreach ($province_piemonte as $sigla => $abitanti)
{
    print "Sigla provincia: $sigla  Abitanti: $abitanti <br>";
    $totale_abitanti += $abitanti;
}
print "Il totale degli abitanti del Piemonte e': $totale_abitanti";

$abitanti_novara = $province_piemonte["NO"];
print "Il numero di abitanti della provincia di novara: $abitanti_novara";
?>

Operazioni sugli array associativi

Inserimento

e' sufficiente assegnare un valore alla chiave che vogliamo inserire.

<?php
// associo i colori al numero di oggetti di quel colore
$colori = ["rosso" => 2, "verde" => 5];

$colori["giallo"] = 3; // inserisce nell'array associativo

var_dump($colori);
?>

Modifica

e' sufficiente assegnare un nuovo valore alla chiave che vogliamo modificare

<?php
// associo i colori al numero di oggetti di quel colore
$colori = ["rosso" => 2, "verde" => 5];

$colori["rosso"] = 42; // modifica il valore
                       // sostituendolo con il nuovo

var_dump($colori);
?>

Cancellazione

E' necessario usare la funzione unset()

<?php
// associo i colori al numero di oggetti di quel colore
$colori = ["rosso" => 2, "verde" => 5];

unset($colori["rosso"]); // rimuove la chiave "rosso"
                         // ed il valore associato

var_dump($colori);
?>

Ricerca

<?php
$frutti = ['mela', 'banana', 'arancia', 'mela'];
$numeri = [10, 20, 30, 40, 50];

// Cerca un valore
$key = array_search('banana', $frutti, true); // Restituisce 1 (la posizione di 'banana')
$key = array_search('uva', $frutti, true);  // Restituisce false
// il terzo parametro serve ad evitare che vengano
// eseguite conversioni di tipo durante i confronti ('2' == 2 ) se strict non attivo


// Controlla solo se il valore esiste (risultato true o false)
$esiste = in_array('arancia', $frutti); // true
$esiste = in_array('uva', $frutti);     // false
?>

Array associativi multidimensionali

<?php
$partecipanti = [
    'Simone' => ['anno' => 1986, 'sesso' => 'M', 'email' => 'simone@notreal.com'],
    'Luca'   => ['anno' => 1991, 'sesso' => 'M', 'email' => 'luca@notreal.com'],
    'Paolo'  => ['anno' => 1985, 'sesso' => 'M', 'email' => 'paolo@notreal.com'],
];

// accesso a un campo: prima la chiave esterna, poi quella interna
$nome = "Luca";
print "La mail di $nome e': " . $partecipanti[$nome]['email'];

// aggiunta di un nuovo partecipante
$partecipanti["Giuseppe"] = ['anno' => 1992, 'sesso' => 'M',
                             'email' => 'giuseppe@test.com'];

print_r($partecipanti);          // stampa struttura e valori
$n = count($partecipanti);       // 4
?>

Chiavi e valori

<?php
// array con le sole chiavi
$nomi = array_keys($partecipanti);
print_r($nomi);
// Array ( [0] => Simone [1] => Luca [2] => Paolo [3] => Giuseppe )

// array con i soli valori (indici numerici)
$valori = array_values($partecipanti);
print_r($valori);
?>

print_r() è molto utile in fase di debug per visualizzare il contenuto di un array.

Funzioni principali sugli array

Funzione Descrizione
count($a) numero di elementi
min($a) / max($a) valore minimo / massimo
sort($a) ordina in modo crescente (modifica l'array)
array_search($val, $a) cerca un valore e ne restituisce la chiave
array_keys($a) array delle chiavi
array_values($a) array dei valori
print_r($a) stampa struttura e valori

Esempio

<?php
$colori = array("r" => "rosso", "v" => "verde", "b" => "blu");
foreach ($colori as $key => $colore) {
    echo "Chiave: $key  Colore: $colore <br>";
}
echo array_search("verde", $colori);    // true

$numeri = array(3, 2, 10, 4, 5, 1);
echo min($numeri);                      // 1
echo max($numeri);                      // 10

sort($numeri);                          // [1, 2, 3, 4, 5, 10]
foreach ($numeri as $numero)
    print "$numero ";
?>