Un array PHP memorizza una lista di valori sotto delle chiavi. Creane uno con le parentesi quadre, $fruits = ['apple', 'banana', 'cherry'];, e leggi un elemento tramite il suo indice, $fruits[0]. Gli indici partono da 0, e count($fruits) dà il numero di elementi.
Ogni array PHP è una mappa ordinata: ogni valore sta sotto una chiave. Quando non scegli le chiavi, PHP le numera 0, 1, 2... e ottieni un array indicizzato. Quando le scegli tu (['name' => 'Ada']), ottieni un array associativo. Entrambi sono lo stesso tipo array.
Creare un array
Le parentesi quadre sono la sintassi abituale. array() è la grafia più vecchia e produce esattamente la stessa cosa. range() costruisce una lista di numeri o lettere, e array_fill() ripete un valore.
Un array PHP può contenere valori di tipi diversi insieme, compresi altri array. Un array di array è un array multidimensionale, il modo consueto per contenere righe di dati.
Ottenere il primo e l'ultimo elemento
PHP non ha indici negativi. $arr[-1] non significa "l'ultimo": cerca una chiave chiamata -1 e, quando non c'è, PHP stampa Warning: Undefined array key -1. Usa array_key_first() e array_key_last(), che funzionano anche quando le chiavi non partono da 0.
Anche end($queue) restituisce l'ultimo valore, ma come effetto collaterale sposta il puntatore interno dell'array, quindi la versione basata sulle chiavi è la scelta più chiara.
Stampare un array
echo $arr non funziona: stampa la parola Array e un warning. Scegli l'output adatto al compito:
print_r($arr)per un dump leggibile durante il debug.var_dump($arr)per vedere anche il tipo e la lunghezza di ogni valore.implode(', ', $arr)per trasformare i valori in una stringa da mostrare.json_encode($arr)per inviare l'array a JavaScript o a un'API.
La pagina su print_r e var_dump tratta le opzioni di formattazione, compresa la stampa di un array dentro l'HTML.
Scorrere un array
foreach è il ciclo fatto per gli array: ti passa ogni valore, e anche la chiave se la chiedi. Anche un ciclo for con un indice funziona per gli array indicizzati le cui chiavi partono da 0 senza buchi.
Gli array vengono copiati, non condivisi
Assegnare un array a un'altra variabile, o passarlo a una funzione, dà una copia. Modificare la copia lascia intatto l'originale. Aggiungi & al parametro quando una funzione deve modificare l'array del chiamante.
Funzioni per array per compito
PHP include più di 70 funzioni per array. Queste sono quelle che userai di più, ognuna con la sua pagina:
| Compito | Funzione |
|---|---|
| Aggiungere in fondo | array_push() o $arr[] = |
| Numero di elementi | count() |
| Verificare se un valore esiste | in_array() |
| Trovare la chiave di un valore | array_search() |
| Verificare se una chiave esiste | array_key_exists() |
| Unire array | array_merge() |
| Trasformare ogni valore | array_map() |
| Tenere alcuni valori | array_filter() |
| Ordinare | sort(), usort() e simili |
| Rimuovere un elemento | unset(), array_splice() |
| Prendere una parte | array_slice() |
| Rimuovere i duplicati | array_unique() |
| Da stringa ad array e ritorno | explode(), implode() |
Chiavi che si fondono in silenzio
Le chiavi degli array sono interi o stringhe, e PHP converte alcune chiavi per te. Una stringa che sembra un numero decimale intero, come "1", diventa l'intero 1, quindi $a["1"] e $a[1] sono la stessa posizione. "01" e "1.5" restano stringhe. Ecco perché un array costruito dall'input di un form o da un CSV può finire con meno elementi del previsto.
Domande frequenti
Come creo un array in PHP?
Usa le parentesi quadre: $colors = ['red', 'green', 'blue'];. Un array vuoto è $items = [];. La vecchia sintassi array('red', 'green') fa la stessa cosa e funziona ancora.
Come stampo un array in PHP?
echo non può stampare un array (stampa la parola Array e un warning). Usa print_r($arr) per un dump leggibile, var_dump($arr) per vedere anche i tipi, oppure echo implode(', ', $arr) per stampare i valori su una riga.
Come ottengo l'ultimo elemento di un array in PHP?
Usa $arr[array_key_last($arr)] (PHP 7.3+) oppure end($arr). PHP non ha indici negativi: $arr[-1] cerca una chiave chiamata -1, che di solito non esiste.
Gli array PHP sono passati per valore o per riferimento?
Per valore. $b = $a; dà a $b una sua copia, quindi modificare $b non modifica $a. Per modificare l'array del chiamante dentro una funzione, dichiara il parametro come riferimento: function add(array &$list).
Qual è la differenza tra un array indicizzato e uno associativo in PHP?
Sono lo stesso tipo. Un array indicizzato ha chiavi intere 0, 1, 2... che PHP assegna per te; un array associativo usa chiavi scelte da te, di solito stringhe come 'name'. Un array può persino mescolare le due.