W3docs

Capire gli Array Associativi in PHP

Impara gli array associativi PHP: crea con chiavi string, leggi e aggiorna valori, itera con foreach, ordina per chiave o valore, evita gli errori.

Un array associativo in PHP memorizza i valori sotto chiavi con nome invece di posizioni numeriche. Dove un array indicizzato risponde a "cosa c'è alla posizione 2?", un array associativo risponde a "qual è il valore per email?" — il che è esattamente come si modellano record, configurazioni e lookup nel codice reale.

Questo capitolo spiega come creare array associativi, leggere e aggiornare i loro valori, scorrerli in ciclo, ordinarli per chiave o valore, ed evitare gli errori comuni che mettono in difficoltà i principianti.

Cos'è un array associativo?

Un array associativo è un array i cui elementi sono accessibili tramite una chiave string (chiamata anche indice) anziché tramite una posizione intera. Ogni chiave deve essere unica — assegnare un valore a una chiave già esistente sovrascrive il valore precedente.

$user = [
    "name"  => "Alice",
    "email" => "[email protected]",
    "age"   => 30,
];

Internamente PHP ha un solo tipo di array. Un array "indicizzato" è semplicemente un array associativo le cui chiavi sono gli interi 0, 1, 2, …. Per questo motivo è possibile mescolare liberamente chiavi string e intere nello stesso array.

Creare un array associativo

Esistono due modi equivalenti per crearne uno. La sintassi breve [] (PHP 5.4+) è preferita nel codice moderno; la funzione array() produce lo stesso risultato.

// Short array syntax (recommended)
$fruits = ["apple" => "red", "banana" => "yellow", "grapes" => "green"];

// Long syntax — identical result
$fruits = array("apple" => "red", "banana" => "yellow", "grapes" => "green");

Puoi anche aggiungere chiavi una alla volta, il che è comodo quando si costruisce un array in un ciclo:

$prices = [];
$prices["coffee"] = 2.5;
$prices["tea"]    = 2.0;

L'ordine in cui si assegnano le chiavi viene preservato — gli array PHP ricordano l'ordine di inserimento, quindi iterando in seguito si otterrà coffee prima di tea.

Accedere ai valori

Leggi un valore usando la sua chiave tra parentesi quadre:

$fruits = ["apple" => "red", "banana" => "yellow"];
echo $fruits["apple"]; // red

Se la chiave non esiste, PHP emette un avviso e restituisce null. Per leggere in modo sicuro, verifica prima con array_key_exists(), oppure usa l'operatore null-coalescing ?? per fornire un valore predefinito:

$color = $fruits["mango"] ?? "unknown";
echo $color; // unknown — no warning

Aggiungere e modificare valori

Assegna con una chiave per aggiornare un elemento esistente o aggiungerne uno nuovo:

$fruits = ["apple" => "red"];

$fruits["apple"]  = "green"; // modify existing key
$fruits["cherry"] = "dark red"; // add a new key

print_r($fruits);
// Array ( [apple] => green [cherry] => dark red )

Rimuovi un elemento con unset():

unset($fruits["apple"]);

Scorrere un array associativo

Un normale ciclo for non funziona qui perché non ci sono indici numerici sequenziali. Usa foreach con la forma key => value per scorrere sia le chiavi che i valori:

$user = ["name" => "Alice", "email" => "[email protected]", "age" => 30];

foreach ($user as $field => $value) {
    echo "$field: $value\n";
}
// name: Alice
// email: [email protected]
// age: 30

Ordinare gli array associativi

Poiché le chiavi hanno un significato, si ordina con funzioni che preservano l'associazione chiave/valoresort() eliminerebbe le chiavi. Usa:

  • ksort() / krsort() — ordina per chiave, crescente / decrescente
  • asort() / arsort() — ordina per valore, crescente / decrescente
$scores = ["Bob" => 75, "Alice" => 90, "Carol" => 82];

arsort($scores); // sort by value, highest first

foreach ($scores as $name => $score) {
    echo "$name: $score\n";
}
// Alice: 90
// Carol: 82
// Bob: 75

Consulta Ordinare gli Array in PHP per la serie completa di funzioni di ordinamento.

Errori comuni

  • Riutilizzare una chiave sovrascrive silenziosamente. ["a" => 1, "a" => 2] produce ["a" => 2] — nessun errore, il primo valore viene perso.
  • Le chiavi string numeriche diventano interi. ["10" => "x"] viene memorizzato sotto la chiave intera 10. $arr["10"] e $arr[10] accedono allo stesso elemento.
  • Le chiavi true/false/null vengono coercizzate. Una chiave true diventa 1, false e null diventano rispettivamente 0 e "". Usa solo string semplici e interi come chiavi.
  • Non fare affidamento su for ($i = 0; …). Usa foreach, array_keys() o array_values() per iterare quando le chiavi non sono 0..n.

Conclusione

Gli array associativi ti permettono di memorizzare dati sotto chiavi string significative e uniche — ideali per record, impostazioni e tabelle di lookup. Leggi con $arr["key"] (proteggi le chiavi mancanti con ??), aggiorna o aggiungi tramite assegnazione, rimuovi con unset(), itera con foreach, e ordina con le funzioni che preservano l'associazione chiave/valore come ksort() e asort().

Per approfondire, esplora gli array indicizzati, gli array multidimensionali (array di array associativi), e array_keys() per estrarre tutte le chiavi in una volta.

Pratica

Pratica
Cosa è vero riguardo agli array associativi in PHP?
Cosa è vero riguardo agli array associativi in PHP?
Was this page helpful?