00 Stimmen

PHP: Neuen Wert an Anfang von Array einfügen

Frage von Gast | 28.05.2014 um 15:22

Ich habe ein PHP-Skript, in dem ich mit einigen Array-Operationen arbeite. Aus anderen Programmiersprachen bin ich es gewohnt, so genannte dynamische Arrays zu benutzen, zu denen man auch nach der Erstellung noch Elemente hinzufügen kann.

Wie es mir scheint, ist das in PHP nicht so einfach, da man ja nur array(1, 2, 3) verwenden kann, um einen Array zu erstellen. Danach scheint der Array festzustehen.

Gibt es denn eine Möglichkeit, einen so erzeugten Array noch im Nachhinein zu erweitern? Konkret geht es mir um die Möglichkeit, einen neuen Wert beziehungsweise ein neues Element direkt am Anfang des Arrays neu einzufügen.

AntwortenPositivNegativDatumStimmen
1Beste Antwort1 Stimme

Also ich benutze immer die Funktion array_merge dafür, um neue Elemente zu einem Array hinzuzufügen. Mit array_merge kann man mehrere Arrays zusammenfügen.

Nutzen kann man es zum Beispiel so:

// Beispiel 1
$arr = array(2, 3, 4, 5);
$arr = array_merge(array(1), $arr);

// Beispiel 2
$arr = array(3, 4, 5);
$arr = array_merge(array(1, 2), $arr);

// Beispiel 3
$arr = array(1, 2, 3, 4);
$arr = array_merge($arr, array(5));

In allen drei Beispielen haben wir anschließend einen Array mit den Elementen 1, 2, 3, 4 und 5. In den ersten beiden Beispielen fügen wir Elemente vorne hinzu, das dritte Beispiel zeigt, dass man diese Methode auch benutzen kann, um Elemente hinten in den Array einzufügen.

Das Prinzip ist immer das gleiche: Wir kombinieren unseren alten Array mit einem neuen Array, der genau die Elemente enthält, die wir hinzufügen möchten.
31.05.2014 um 09:08

AntwortenPositiv Negativ
00 Stimmen

PHP enthält die Funktion array_unshift, mit der man eines oder mehrere Elemente am Anfang eines Arrays hinzufügen kann.

// Ein Element an den Anfang einfügen
$arr = array(2, 3, 4, 5);
$arr = array_unshift($arr, 1);     // 1, 2, 3, 4, 5

// Zwei Elemente an den Anfang einfügen
$arr = array(3, 4, 5);
$arr = array_unshift($arr, 1, 2);  // 1, 2, 3, 4, 5

Die Funktion erwartet also mindestens zwei Parameter: Als erstes den Array, zu dem die Elemente hinzugefügt werden sollen und anschließend eine beliebige Anzahl von Elementen.
02.06.2014 um 09:00

AntwortenPositiv Negativ
00 Stimmen

Zuletzt möchte ich noch eine vielleicht etwas ungewöhnliche Methode vorstellen. In bestimmten Situationen kann nämlich auch die Funktion array_pad sinnvoll sein. Diese Funktion arbeitet ähnlich wie array_fill und füllt einen übergebenen Array auf eine gewünschte Länge mit immer dem gleichen Elemente auf.

$arr = array(1, 2, 3);
$arr = array_pad($arr, 6, 0);  // 1, 2, 3, 0, 0, 0

Als ersten Parameter geben wir den ursprünglichen Array an, als zweiten die gewünschte Länge und als dritten das Element, das zum Auffüllen benutzt werden soll. Im Beispiel möchten wir einen Array mit 6 Elementen haben und den Array mit 0 auffüllen.

Benutzen wir einen positiven zweiten Parameter, wird hinten aufgefüllt. Geben wir einen negativen zweiten Parameter an, wird von aufgefüllt:

$arr = array(1, 2, 3);
$arr = array_pad($arr, -6, 0);  // 0, 0, 0, 1, 2, 3

Wenn wir nur ein Element an den Anfang einfügen möchten, könnte eine dynamische Lösung etwa so aussehen:

$arr = array(1, 2, 3);
$arr = array_pad($arr, (count($arr)+1)*(-1), 0);  
// 0, 1, 2, 3

Wir brauchen also die negative Länge des aktuellen Arrays + 1, um genau ein Element vorne einzufügen. Das erledigt dynamisch der Ausdruck (count($arr)+1)*(-1).
04.06.2014 um 18:57

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.