W3docs

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:

TipoChiaviUso tipico
IndicizzatoInteri automatici 0, 1, 2…Un elenco ordinato di elementi
AssociativoStringhe a sceltaUn record con campi denominati
MultidimensionaleArray annidati dentro arrayTabelle, 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"];   // Ada

Aggiungere 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 associativi e array multidimensionali per 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:

php— editable, runs on the server

Le funzioni più utilizzate

FunzioneCosa faModifica?
count()Numero di elementino
in_array()Un valore è presente?no
array_keys()Tutte le chiavi come arrayno
array_values()Tutti i valori, reindicizzati da 0no
array_merge()Unisce due o più arrayno
array_slice()Estrae una porzioneno
array_unique()Rimuove i valori duplicatino
array_push()Aggiunge uno o più valori in coda
sort()Ordina i valori in modo crescente

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-indexed

array_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:

php— editable, runs on the server

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_filter conserva le chiavi. Come mostrato sopra, il risultato non è più 0, 1, 2…. Usare array_values() quando si ha bisogno di un elenco pulito.
  • array_merge rinumera 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 $arr e restituisce true — scrivere $arr = sort($arr) è un bug classico che imposta $arr a true.
  • Accedere a una chiave mancante genera un avviso e restituisce null. Verificare prima con isset() o array_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.

Esercitazione

Pratica
Quali affermazioni sono vere riguardo agli array in PHP?
Quali affermazioni sono vere riguardo agli array in PHP?
Was this page helpful?