Wie füge ich ein Element am Anfang eines Arrays in PHP ein?

167

Ich weiß, wie ich es bis zum Ende einfügen kann, indem ich:

$arr[] = $item;

Aber wie fügt man es an den Anfang?

Netz
quelle
2
$arr[-1] = $item;Gefunden hier: stackoverflow.com/a/15252657/669677
4
@ 2astalavista, das funktioniert nicht: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
Laurent
@ returnthis.lau_ In diesem Fall sollten Sie die for-Schleife verwenden - beginnend mit -1 -, damit sie funktioniert: for ($i = -1; $i < count($a)-1; $i++)Wie der Link zeigt, auf den verwiesen wird, aber es ist leicht zu vergessen, daher bevorzuge ich diese Lösung nicht mehr.

Antworten:

266

Verwenden Sie array_unshift ($ array, $ item);

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

werde dir geben

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)
Trav L.
quelle
7
Was ist, wenn Sie wörtliche statt numerische Tasten benötigen?
Evan
4
@Evan, die Dokumentation für array_unshiftsagt das FolgendeAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
craned
1
Es gibt zwei Probleme: 1) Neuindizierung des Arrays 2) Element mit Index kann nicht hinzugefügt werden.
Nabi KAZ
2
Wenn Sie ein assoziatives Array haben oder Schlüssel beibehalten müssen, sehen Sie sich die Benutzerbeispiele hier an: php.net/manual/en/function.array-unshift.php Es gibt einige gute Beispiele, wie dies erreicht werden kann!
Vallier
112

Bei einem assoziativen Array oder einem nummerierten Array, bei dem Sie die Array-Schlüssel nicht ändern möchten:

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

$arr = $firstItem + $arr;

array_merge funktioniert nicht, da das Array immer neu indiziert wird.

tihe
quelle
6
Dies ist in der Tat die beste Antwort!
Ankit
5
Beachtung! "Der Operator + gibt das rechte Array zurück, das an das linke Array angehängt ist. Für Schlüssel, die in beiden Arrays vorhanden sind, werden die Elemente aus dem linken Array und die übereinstimmenden Elemente aus dem rechten Array verwendet ignoriert. " - Siehe: stackoverflow.com/a/2140094/3411766
Cottton
Die Lösung ist gut, da Elemente mit einem Index hinzugefügt werden können und das Array nicht neu indiziert wurde. Beachten Sie jedoch nur das Entfernen von Elementen im rechten Array, wenn das linke Array denselben Index enthält.
Nabi KAZ
6

Fügen Sie ein Element am Anfang eines assoziativen Arrays mit einer Zeichenfolge / einem benutzerdefinierten Indexschlüssel ein

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

ERGEBNIS

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]
Manish Dhruw
quelle
4

Verwenden Sie array_unshift () , um das erste Element in ein Array einzufügen.

Benutzer array_shift (), um das erste Element eines Arrays zu entfernen.

Vinit Kadkol
quelle
4

Oder Sie können ein temporäres Array verwenden und dann das echte löschen, wenn Sie es im Zyklus ändern möchten:

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

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

Die Ausgabe lautet:

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

und wenn Sie dies während des Zyklus tun, sollten Sie $temp_arraynach dem Anhängen des Elements an das Array bereinigen .

Arnas Pečelis
quelle
1

Mit benutzerdefiniertem Index:

$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"]
    )
Timothy Nwanwene
quelle
1
Ein Array kann nicht so verkettet werden
Battle Hawk
Wahrscheinlich wollte er plus (+) anstelle von Komma (.) Verwenden
Erdinç Çorbacı
1

Für ein assoziatives Array können Sie einfach Merge verwenden.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
pictoru
quelle