Menu

PHP array_push(): aggiungere elementi a un array

array_push($arr, $value) aggiunge uno o più valori in fondo a un array; $arr[] = $value fa lo stesso per un solo valore ed è più veloce. Impara ad aggiungere in fondo, all'inizio o in mezzo a un array, aggiungere una chiave e un valore ed evitare il classico bug del valore restituito.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

array_push($arr, $value) aggiunge un valore in fondo a un array. Per un solo valore, la forma breve $arr[] = $value; fa lo stesso lavoro senza chiamare una funzione ed è quella che usa la maggior parte del codice PHP. Entrambe modificano l'array sul posto.

array_push() riceve l'array per riferimento, quindi modifica la variabile che le passi. Restituisce il nuovo numero di elementi, che puoi ignorare.

array_push vs $arr[] =

Usa $arr[] = $value per un solo valore: è più breve ed evita una chiamata di funzione, che dentro un grande ciclo pesa. Usa array_push() quando hai più valori da aggiungere in un'istruzione, o una lista di valori da espandere.

$arr[] = funziona anche su una variabile che non esiste ancora: PHP crea l'array. array_push() richiede un array esistente: su una variabile non definita lancia TypeError: array_push(): Argument #1 ($array) must be of type array, null given.

Aggiungere una chiave e un valore

array_push() accoda solo valori con la successiva chiave intera. Per aggiungere una chiave con nome, assegnale un valore. Per aggiungere più coppie insieme, usa += (mantiene le chiavi esistenti) o array_merge() (fa vincere i nuovi valori).

La differenza tra + e array_merge() quando le chiavi coincidono è trattata nella pagina su array_merge.

Aggiungere all'inizio: array_unshift

array_unshift($arr, $value) inserisce all'inizio. Le chiavi intere vengono rinumerate in modo che il nuovo valore abbia indice 0; le chiavi stringa restano invariate. Come array_push(), accetta più valori e restituisce il nuovo conteggio.

Per mettere per prima una coppia con nome, costruisci un nuovo array: $menu = ['login' => '/login'] + $menu;.

Inserire in una posizione precisa

array_splice($arr, $offset, 0, $values) inserisce senza rimuovere nulla: parte da $offset, rimuove 0 elementi e mette lì i nuovi valori. Le chiavi intere dopo il punto di inserimento vengono rinumerate.

array_splice() può anche rimuovere e sostituire elementi; la pagina sulla rimozione degli elementi mostra queste forme.

Accodare un altro array

array_push($a, $b) aggiunge $b come un unico elemento annidato, cosa che raramente vuoi. Per aggiungere i valori di $b uno per uno, espandili, oppure costruisci un nuovo array con la sintassi spread o con array_merge().

Errore comune: assegnare il valore restituito

array_push() restituisce un numero, il nuovo conteggio degli elementi. Riassegnarlo alla variabile dell'array sostituisce l'array con un intero, e il successivo array_push() su di essa lancia un TypeError.

Lo stesso vale per array_unshift() e per sort(), che restituisce true. Le funzioni che modificano un array sul posto restituiscono uno stato, non l'array.

Domande frequenti

Qual è la differenza tra array_push e $arr[] in PHP?

Entrambi accodano in fondo. $arr[] = $x; aggiunge un valore senza chiamare una funzione, quindi è la scelta abituale ed è un po' più veloce. array_push($arr, $a, $b, $c) è comodo quando aggiungi più valori insieme, e restituisce il nuovo numero di elementi.

Come aggiungo una chiave e un valore a un array in PHP?

Assegna alla chiave: $arr['color'] = 'blue';. array_push() non può farlo perché usa sempre la successiva chiave intera. Per aggiungere più coppie insieme, usa $arr += ['a' => 1, 'b' => 2]; oppure array_merge().

Come aggiungo un elemento all'inizio di un array in PHP?

Usa array_unshift($arr, $value). Rinumera le chiavi intere in modo che il nuovo valore abbia indice 0; le chiavi stringa restano invariate.

Perché il mio array diventa un numero dopo array_push?

Perché array_push() restituisce il nuovo numero di elementi, non l'array. Scrivere $arr = array_push($arr, 'x'); sostituisce l'array con quel numero. Chiamala su una riga a sé: array_push($arr, 'x');.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA