Menu

PHP array_push(): Elemente zu einem Array hinzufügen

array_push($arr, $value) fügt einen oder mehrere Werte am Ende eines Arrays hinzu; $arr[] = $value macht dasselbe für einen Wert und ist schneller. Hier: am Ende, am Anfang oder in der Mitte eines Arrays einfügen, einen Schlüssel mit Wert hinzufügen und den klassischen Bug mit dem Rückgabewert vermeiden.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

array_push($arr, $value) fügt einen Wert am Ende eines Arrays hinzu. Für einen einzelnen Wert erledigt die Kurzform $arr[] = $value; dieselbe Aufgabe ohne Funktionsaufruf, und die meisten PHP-Codebasen verwenden sie. Beide ändern das Array direkt.

array_push() nimmt das Array per Referenz, ändert also die Variable, die du übergibst. Es liefert die neue Anzahl der Elemente zurück, die du ignorieren kannst.

array_push vs $arr[] =

Verwende $arr[] = $value für einen Wert: Es ist kürzer und spart einen Funktionsaufruf, was sich in einer großen Schleife summiert. Verwende array_push(), wenn du mehrere Werte in einer Anweisung hinzufügen oder eine Liste von Werten hineinspreaden willst.

$arr[] = funktioniert auch bei einer Variable, die noch nicht existiert: PHP erzeugt das Array. array_push() braucht ein bestehendes Array: Bei einer undefinierten Variable wirft es TypeError: array_push(): Argument #1 ($array) must be of type array, null given.

Einen Schlüssel mit Wert hinzufügen

array_push() hängt Werte nur mit dem nächsten Ganzzahl-Schlüssel an. Um einen benannten Schlüssel hinzuzufügen, weist du ihm etwas zu. Um mehrere Paare auf einmal hinzuzufügen, verwendest du += (behält bestehende Schlüssel) oder array_merge() (lässt die neuen Werte gewinnen).

Den Unterschied zwischen + und array_merge() bei kollidierenden Schlüsseln behandelt die Seite zu array_merge.

Am Anfang hinzufügen: array_unshift

array_unshift($arr, $value) fügt am Anfang ein. Ganzzahl-Schlüssel werden neu nummeriert, sodass der neue Wert den Index 0 bekommt; String-Schlüssel bleiben, wie sie sind. Wie array_push() nimmt es mehrere Werte an und liefert die neue Anzahl zurück.

Um ein benanntes Paar an den Anfang zu setzen, baust du ein neues Array: $menu = ['login' => '/login'] + $menu;.

An einer bestimmten Position einfügen

array_splice($arr, $offset, 0, $values) fügt ein, ohne etwas zu entfernen: Es beginnt bei $offset, entfernt 0 Elemente und setzt die neuen Werte dort ein. Die Ganzzahl-Schlüssel nach der Einfügestelle werden neu nummeriert.

array_splice() kann auch Elemente entfernen und ersetzen; die Seite zum Entfernen von Elementen zeigt diese Formen.

Ein anderes Array anhängen

array_push($a, $b) fügt $b als ein einziges verschachteltes Element hinzu, was selten gewollt ist. Um die Werte von $b einzeln hinzuzufügen, spreadest du sie, oder du baust ein neues Array mit der Spread-Syntax oder array_merge().

Typischer Fehler: den Rückgabewert zuweisen

array_push() liefert eine Zahl, die neue Anzahl der Elemente. Wenn du sie der Array-Variable zuweist, ersetzt du dein Array durch eine Ganzzahl, und das nächste array_push() darauf wirft einen TypeError.

Dasselbe gilt für array_unshift() und für sort(), das true liefert. Funktionen, die ein Array direkt ändern, geben einen Status zurück, nicht das Array.

Häufig gestellte Fragen

Was ist der Unterschied zwischen array_push und $arr[] in PHP?

Beide hängen ans Ende an. $arr[] = $x; fügt einen Wert ohne Funktionsaufruf hinzu, ist also die übliche Wahl und etwas schneller. array_push($arr, $a, $b, $c) ist praktisch, wenn du mehrere Werte auf einmal hinzufügst, und liefert die neue Anzahl der Elemente zurück.

Wie füge ich in PHP einem Array einen Schlüssel mit Wert hinzu?

Weise dem Schlüssel etwas zu: $arr['color'] = 'blue';. array_push() kann das nicht, weil es immer den nächsten Ganzzahl-Schlüssel verwendet. Um mehrere Paare auf einmal hinzuzufügen, verwendest du $arr += ['a' => 1, 'b' => 2]; oder array_merge().

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

Mit array_unshift($arr, $value). Es nummeriert die Ganzzahl-Schlüssel neu, sodass der neue Wert den Index 0 bekommt; String-Schlüssel bleiben, wie sie sind.

Warum wird mein Array nach array_push zu einer Zahl?

Weil array_push() die neue Anzahl der Elemente zurückgibt, nicht das Array. $arr = array_push($arr, 'x'); ersetzt das Array durch diese Zahl. Ruf es in einer eigenen Zeile auf: array_push($arr, 'x');.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S