Guida completa alle funzioni array in PHP
Gli array in PHP sono una struttura dati fondamentale per qualsiasi sviluppatore. Permettono di memorizzare e manipolare una collezione di valori in una singola variabile.
Un array in PHP è una singola variabile che contiene una collezione di valori. Invece di dichiarare $user1, $user2, $user3, li si memorizza tutti in un unico array e vi si accede tramite un indice (un numero) o una chiave (un nome). Gli array sono uno dei blocchi costruttivi più utilizzati in PHP — i dati delle richieste ($_POST, $_GET), le righe del database e la configurazione vengono tutti forniti come array.
Questo capitolo spiega i tre tipi di array PHP, come crearli e leggerli, come scorrerli in iterazione e le funzioni predefinite più utili.
Tre tipi di array
PHP ha internamente un unico tipo di array, ma lo si vede utilizzato in tre modi distinti:
| Tipo | Chiavi | Uso tipico |
|---|---|---|
| Indicizzato | Interi automatici 0, 1, 2… | Un elenco ordinato di elementi |
| Associativo | Stringhe a scelta | Un record con campi denominati |
| Multidimensionale | Array annidati dentro array | Tabelle, dati raggruppati |
Creare gli array
La moderna sintassi abbreviata usa le parentesi quadre []; la forma più vecchia array() è equivalente e funziona ancora.
<?php
// Indexed array — keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];
// Associative array — you choose the keys
$user = [
"name" => "Ada",
"email" => "[email protected]",
"admin" => true,
];
echo $fruits[0]; // apple
echo $user["name"]; // AdaAggiungere elementi a un array con la sintassi delle parentesi vuote, che aggiunge in coda:
<?php
$fruits = ["apple", "banana"];
$fruits[] = "cherry"; // index 2
$fruits[] = "date"; // index 3
print_r($fruits);
// Array ( [0] => apple [1] => banana [2] => cherry [3] => date )Consulta
array indicizzati,array associativiearray multidimensionaliper una trattazione più approfondita di ciascun tipo.
Iterare su un array
Il ciclo foreach è il modo idiomatico per scorrere un array, poiché fornisce direttamente chiave e valore senza dover gestire manualmente l'indice:
<?php
$user = ["name" => "Ada", "email" => "[email protected]"];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
// name: Ada
// email: [email protected]Consulta il capitolo sul ciclo foreach per la sintassi completa, compresa l'iterazione per riferimento.
Come funzionano le funzioni array
PHP include centinaia di funzioni array — helper predefiniti che eseguono un'operazione specifica in modo da non dover scrivere il ciclo manualmente. Una cosa fondamentale da capire: la maggior parte di esse restituisce un nuovo array e lascia l'originale invariato (array_map, array_filter, array_merge…), mentre un gruppo più ristretto modifica l'array sul posto e restituisce altro (sort restituisce true, array_push restituisce la nuova lunghezza). Sapere quale fa cosa evita una classe comune di bug.
Si chiama una funzione passando l'array come argomento. Ad esempio, array_sum somma tutti i valori:
Le funzioni più utilizzate
| Funzione | Cosa fa | Modifica? |
|---|---|---|
count() | Numero di elementi | no |
in_array() | Un valore è presente? | no |
array_keys() | Tutte le chiavi come array | no |
array_values() | Tutti i valori, reindicizzati da 0 | no |
array_merge() | Unisce due o più array | no |
array_slice() | Estrae una porzione | no |
array_unique() | Rimuove i valori duplicati | no |
array_push() | Aggiunge uno o più valori in coda | sì |
sort() | Ordina i valori in modo crescente | sì |
Ecco le tre funzioni con callback più utilizzate — map, filter e reduce — che coprono la maggior parte delle operazioni di trasformazione dei dati.
array_map — trasformare ogni elemento
array_map esegue una callback su ogni valore e restituisce un nuovo array con i risultati, della stessa lunghezza dell'originale:
<?php
$numbers = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n * $n, $numbers);
print_r($squared);
// Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )array_filter — conservare solo ciò che corrisponde
array_filter mantiene gli elementi per i quali la callback restituisce true. Si noti che conserva le chiavi originali, quindi spesso è necessario seguirla con array_values() per reindicizzare:
<?php
$numbers = [1, 2, 3, 4, 5, 6];
$even = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($even);
// Array ( [1] => 2 [3] => 4 [5] => 6 ) ← keys kept
print_r(array_values($even));
// Array ( [0] => 2 [1] => 4 [2] => 6 ) ← re-indexedarray_reduce — ridurre a un singolo valore
array_reduce applica una callback che porta un accumulatore ($carry) attraverso l'intero array, riducendolo a un unico risultato — una somma, una stringa, un massimo, qualsiasi cosa:
Consulta array_map, array_filter e array_reduce per i dettagli completi, e funzioni callback PHP per capire come funzionano le callback.
Errori comuni
array_filterconserva le chiavi. Come mostrato sopra, il risultato non è più0, 1, 2…. Usarearray_values()quando si ha bisogno di un elenco pulito.array_mergerinumera le chiavi intere ma sovrascrive le chiavi stringa.array_merge(["a" => 1], ["a" => 2])produce["a" => 2], mentre due array indicizzati vengono concatenati, non sovrascritti.- Modifica vs. restituzione.
sort($arr)modifica$arre restituiscetrue— scrivere$arr = sort($arr)è un bug classico che imposta$arratrue. - Accedere a una chiave mancante genera un avviso e restituisce
null. Verificare prima conisset()oarray_key_exists().
Conclusione
Gli array PHP esistono in tre varianti — indicizzati, associativi e multidimensionali — e una vasta libreria di funzioni consente di interrogarli, trasformarli e combinarli. Usare foreach per iterare, array_map / array_filter / array_reduce per rimodellare i dati, e tenere sempre a mente la distinzione tra modifica e restituzione per evitare sorprese. Da qui, è possibile esplorare ordinamento degli array e funzioni PHP per completare il proprio bagaglio di strumenti.