array_unshift()
Scopri come array_unshift() in PHP aggiunge elementi all'inizio di un array, reindicizza le chiavi numeriche e restituisce il nuovo conteggio.
Stai cercando una funzione potente per aggiungere nuovi elementi all'inizio di un array in PHP? La risposta è la funzione array_unshift(). Con questa funzione puoi facilmente aggiungere uno o più elementi all'inizio di un array, reindicizzando automaticamente le chiavi numeriche e spostando gli elementi esistenti a posizioni più alte.
Cos'è array_unshift()?
La funzione array_unshift() è una funzione PHP built-in che aggiunge uno o più elementi all'inizio di un array. Non sostituisce gli elementi esistenti — li sposta a posizioni di indice più alte per fare spazio ai nuovi. Considerala come l'immagine speculare di array_push(), che aggiunge elementi alla fine.
Sintassi
array_unshift(array &$array, mixed ...$values): int$array— l'array a cui anteporre elementi. Viene passato per riferimento, quindi la variabile originale viene modificata direttamente.$values— uno o più valori da aggiungere all'inizio. Elencati da sinistra a destra, appaiono nello stesso ordine all'inizio dell'array.
La funzione restituisce il nuovo numero di elementi nell'array (un intero), non l'array stesso.
Esempio di base
Aggiungiamo "orange" e "lemon" all'inizio di $fruits. Le chiavi numeriche vengono reindicizzate automaticamente a partire da 0, e il valore restituito 5 è il nuovo conteggio degli elementi. L'output è:
5
Array
(
[0] => orange
[1] => lemon
[2] => apple
[3] => banana
[4] => cherry
)Come vengono gestite le chiavi
Questa è la fonte più comune di sorprese. array_unshift() tratta le chiavi numeriche e le chiavi stringa in modo diverso:
- Le chiavi numeriche vengono azzerate. Tutte le chiavi intere esistenti vengono rinumerate a partire da
0. Eventuali chiavi intere personalizzate vengono perse. - Le chiavi stringa (associative) vengono conservate. Solo i nuovi elementi anteposti ricevono chiavi numeriche (
0,1, …); le chiavi stringa esistenti mantengono i loro nomi.
<?php
$data = array("name" => "Alice", 10 => "ten", 20 => "twenty");
array_unshift($data, "first");
print_r($data);
?>Output — notare che "name" rimane, ma 10 e 20 diventano 1 e 2:
Array
(
[0] => first
[name] => Alice
[1] => ten
[2] => twenty
)Quando usarla
- Per costruire una coda o un elenco in cui i nuovi elementi devono stare in testa (i più recenti per primi).
- Per aggiungere una riga di intestazione o un valore predefinito prima dei dati esistenti.
- Per invertire l'effetto di
array_shift(), che rimuove il primo elemento.
Una nota sulle prestazioni: poiché ogni elemento esistente deve essere reindicizzato e spostato, array_unshift() è O(n) — più lenta di array_push(), che è O(1). Per array molto grandi all'interno di un ciclo critico, è preferibile aggiungere in coda e invertire una volta alla fine, oppure utilizzare una struttura come SplDoublyLinkedList.
Funzioni correlate
array_push()— aggiunge elementi alla fine di un array.array_shift()— rimuove il primo elemento.array_splice()— inserisce o rimuove elementi in qualsiasi posizione.array_merge()— unisce due o più array.