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


167

So come inserirlo fino alla fine:

$arr[] = $item;

Ma come inserirlo all'inizio?


2
$arr[-1] = $item;Trovato qui: stackoverflow.com/a/15252657/669677

4
@ 2astalavista, che non funziona: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent

@ returnthis.lau_ questo caso dovresti usare per loop - a partire da -1 - per farlo funzionare: for ($i = -1; $i < count($a)-1; $i++)come ha mostrato il link di riferimento, ma è facile dimenticare, quindi non preferisco più quella soluzione.

Risposte:


267

Usa array_unshift ($ array, $ item);

$arr = array('item2', 'item3', 'item4');
array_unshift($arr , 'item1');
print_r($arr);

ti darà

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)

7
Che dire se hai bisogno di chiavi letterali, piuttosto che numeriche?
Evan,

4
@Evan, la documentazione per array_unshiftdice quanto segueAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
allungata il

1
Esistono due problemi: 1) reindicizzazione dell'array 2) impossibile aggiungere l'elemento con un indice.
Nabi KAZ,

2
Se hai un array associativo o hai bisogno di conservare le chiavi, vedi qui gli esempi utente: php.net/manual/en/function.array-unshift.php ci sono un paio di buoni esempi su come realizzare questo!
Vallier,

112

Nel caso di un array associativo o di un array numerato in cui non si desidera modificare le chiavi dell'array:

$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

array_merge non funziona poiché reindicizza sempre l'array.


6
Questa è davvero la migliore risposta!
Ankit

5
Attenzione! "L'operatore + restituisce l'array di destra aggiunto all'array di sinistra; per le chiavi che esistono in entrambi gli array, verranno utilizzati gli elementi dell'array di sinistra e gli elementi corrispondenti dell'array di destra saranno ignorato." - See: stackoverflow.com/a/2140094/3411766
cottton

La soluzione è buona perché può aggiungere elementi con un indice e non reindicizzare l'array; Ma basta una nota su come rimuovere l'elemento nell'array di destra, se ci sono gli stessi indici nell'array di sinistra.
Nabi KAZ,


6

Inserire un elemento all'inizio di un array associativo con stringa / chiave indice personalizzata

<?php

$array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo'];

$array = array_reverse($array);

$array['newKey'] = 'newValue';

$array = array_reverse($array);

RISULTATO

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]


4

Utilizzare array_unshift () per inserire il primo elemento in un array.

Utente array_shift () per rimuovere il primo elemento di un array.


4

Oppure puoi usare l'array temporaneo e quindi eliminare quello reale se vuoi cambiarlo mentre sei in ciclo:

$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];

unset($array[1]);
array_unshift($array , $temp_array);

l'output sarà:

array(0 => 'b', 1 => 'a', 2 => 'c')

e quando lo fai mentre sei in ciclo, dovresti ripulirlo $temp_arraydopo aver aggiunto l'elemento all'array.


1

Con indice personalizzato:

$arr=array("a"=>"one", "b"=>"two");
    $arr=array("c"=>"three", "d"=>"four").$arr;

    print_r($arr);
    -------------------
    output:
    ----------------
    Array
    (
    [c]=["three"]
    [d]=["four"]
    [a]=["two"]
    [b]=["one"]
    )

1
un array non può essere concatenato in questo modo
Battle Hawk,

Probabilmente intendeva usare il segno più (+) invece della virgola (.)
Erdinç Çorbacı

1

Per un array associativo puoi semplicemente usare unisci.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.