W3docs

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

php— editable, runs on the server

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

Esercitazione

Pratica
Qual è lo scopo della funzione array_unshift in PHP?
Qual è lo scopo della funzione array_unshift in PHP?
Was this page helpful?