Un array multidimensionale è un array i cui elementi sono array. Lo leggi con una coppia di parentesi per livello: $grid[1][2] è la riga 1, colonna 2, e $users[0]['name'] è il nome nel primo record.
La seconda forma, una lista di record con campi con nome, è quella che incontrerai più spesso: è ciò che di solito ti restituiscono una query al database, una risposta JSON decodificata o un file CSV letto. Ogni record è un array associativo.
Creare array annidati
L'annidamento può essere profondo quanto serve e i livelli possono mescolare chiavi numeriche e stringhe. Un array di configurazione è un esempio comune: sezioni con un nome, ognuna con impostazioni o liste.
Aggiungere righe e valori annidati
$rows[] = [...] accoda una riga intera. $arr['key'][] = $value accoda dentro una lista annidata, e PHP crea l'array interno la prima volta, quindi raggruppare valori non richiede preparazione.
Scorrere un array multidimensionale
Usa un foreach per livello. Per una lista di record di solito basta un ciclo, perché leggi i campi per nome. Per una griglia, il ciclo interno percorre le celle di ogni riga.
Costruire una tabella HTML da un array
Un array di righe corrisponde direttamente a una tabella HTML: le chiavi della prima riga diventano l'intestazione, e ogni riga diventa un <tr>. Eseguilo e la scheda Page mostra la tabella; cambia un valore o aggiungi una riga ed esegui di nuovo.
La forma foreach (...): ... endforeach; è lo stesso ciclo scritto per i template, così l'HTML resta leggibile.
Ottenere una colonna da tutte le righe
array_column() estrae un campo da ogni riga in una lista piatta. Passa un terzo argomento per usare un altro campo come chiave del risultato, il che trasforma una lista di record in una tabella di ricerca.
Ordinare le righe per un campo
usort() ordina le righe con una funzione di confronto. L'operatore spaceship <=> restituisce -1, 0 o 1, esattamente ciò che usort() si aspetta. Scambia $a e $b per l'ordine decrescente.
count($players, COUNT_RECURSIVE) conta le 3 righe più i 6 campi al loro interno, ed è per questo che stampa 9.
Errore comune: leggere una chiave profonda che potrebbe mancare
Leggere $config['cache']['ttl'] quando non c'è la chiave cache stampa Warning: Undefined array key "cache", seguito da Warning: Trying to access array offset on null per il livello successivo. L'operatore ?? controlla l'intera catena in una volta e non genera mai warning, quindi è il modo sicuro di leggere valori annidati facoltativi.
Domande frequenti
Come accedo a un valore in un array multidimensionale in PHP?
Aggiungi una coppia di parentesi per livello: $matrix[1][0] è la riga 1, colonna 0, e $users[0]['email'] è l'email del primo utente. Ogni parentesi legge dall'array restituito da quella precedente.
Come scorro un array multidimensionale in PHP?
Annida un foreach per livello: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Per un array di record di solito basta un ciclo e leggi i campi per nome: $row['name'].
Come aggiungo un elemento a un array multidimensionale?
Accoda una riga intera con $rows[] = ['name' => 'Linus', 'age' => 54];, oppure accoda dentro un array annidato con $groups['admins'][] = 'Grace';. PHP crea l'array interno se la chiave non esiste ancora.
Come creo un array 2D pieno di zeri in PHP?
Annida due chiamate ad array_fill(): $grid = array_fill(0, 3, array_fill(0, 4, 0)); dà 3 righe di 4 zeri. Ogni riga è una copia a sé, quindi $grid[0][0] = 5; modifica solo la prima riga.