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"]; // redSe 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 warningAggiungere 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: 30Ordinare gli array associativi
Poiché le chiavi hanno un significato, si ordina con funzioni che preservano l'associazione chiave/valore — sort() eliminerebbe le chiavi. Usa:
ksort()/krsort()— ordina per chiave, crescente / decrescenteasort()/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: 75Consulta 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 intera10.$arr["10"]e$arr[10]accedono allo stesso elemento. - Le chiavi
true/false/nullvengono coercizzate. Una chiavetruediventa1,falseenulldiventano rispettivamente0e"". Usa solo string semplici e interi come chiavi. - Non fare affidamento su
for ($i = 0; …). Usaforeach,array_keys()oarray_values()per iterare quando le chiavi non sono0..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.