Elemente zu leerem PHP-Array hinzufügen: Was passiert intern?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Die Magie des leeren Containers: Wie Sie PHP für sich arbeiten lassen

\n\n

Stellen Sie sich vor: Sie schreiben ein PHP-Skript und müssen Daten sammeln – zum Beispiel Produkt-IDs aus einem Warenkorb. Sie erstellen ein leeres Array und fügen dann in einer Schleife Elemente hinzu. Klingt einfach, oder? Doch genau dieser Moment – das Hinzufügen von Elementen zu einem leeren PHP-Array – wirft tausende Fragen auf Stack Overflow auf. Warum? Weil Anfänger oft die Syntax verwechseln und erfahrene Entwickler verstehen wollen, was „unter der Haube“ passiert.

\n\n

In diesem Artikel zeigen wir Ihnen nicht nur, wie Sie korrekten Code schreiben. Wir werfen einen Blick in den PHP-Kern (Zend Engine), analysieren, wie sich $arr[] = $value von array_push() unterscheidet, und entdecken, welche Überraschungen PHP 8.1 bereithält. Bereit? Los geht's!

\n\n

Die häufigste Frage: Wie füge ich ein Element hinzu?

\n\n

Als Anfänger denken Sie wahrscheinlich zuerst an etwas wie:

\n\n
<?php\n$myArray = array(); // leeres Array\n$myArray[] = 'erstes Element';\n$myArray[] = 'zweites Element';\nprint_r($myArray);\n?>
\n\n

Dieser Code gibt aus:

\n\n
Array\n(\n    [0] => erstes Element\n    [1] => zweites Element\n)
\n\n

Es funktioniert? Ja. Aber warum? Lassen Sie uns analysieren, was der Operator [] tatsächlich tut.

\n\n

Der Operator $arr[] = $value: Schnell und elegant

\n\n

Wenn Sie $arr[] = $value schreiben, ruft PHP keine Funktionen auf. Stattdessen greift es direkt auf die interne Datenstruktur des Arrays zu (zend_array in der Zend Engine).

\n\n

Was unter der Haube passiert:

\n
    \n
  • PHP prüft, ob das Array existiert. Falls nicht, wird ein neues erstellt (besser: immer explizit initialisieren: $arr = []).
  • \n
  • Das Element wird am Ende des Arrays hinzugefügt, automatisch mit dem nächsten numerischen Schlüssel (0, 1, 2...).
  • \n
  • War das Array leer, erhält das erste Element den Schlüssel 0.
  • \n
  • Kein Overhead durch Funktionsaufrufe. Dies ist die performanteste Methode.
  • \n
\n\n

Tipp: Verwenden Sie $arr[] = ... immer, wenn Sie einfach ein Element am Ende hinzufügen möchten. Es ist schnell, lesbar und erfordert keinen Funktionsimport.

\n\n

array_push(): Wenn Sie mehrere Elemente auf einmal hinzufügen möchten

\n\n

Die zweite beliebte Methode ist die Funktion array_push():

\n\n
<?php\n$myArray = [];\narray_push($myArray, 'erstes', 'zweites', 'drittes');\nprint_r($myArray);\n?>
\n\n

Das Ergebnis ist dasselbe. Aber es gibt Nuancen:

\n
    \n
  • array_push() nimmt das Array als Referenz entgegen und fügt alle übergebenen Werte am Ende hinzu.
  • \n
  • Es gibt die neue Anzahl der Elemente im Array zurück (seit PHP 7.3).
  • \n
  • Unter der Haube: Die Funktion ruft für jedes Element die interne Prozedur zend_hash_next_index_insert auf. Das bedeutet: Wenn Sie nur ein Element hinzufügen, ist array_push() aufgrund des Funktionsaufruf-Overheads etwas langsamer als $arr[] = ....
  • \n
\n\n

Wann verwenden: Nur wenn Sie mehrere Elemente auf einmal hinzufügen möchten (2 oder mehr). Für ein einzelnes Element – vergessen Sie array_push und verwenden Sie [].

\n\n

Leeres Array und Schlüssel: Was, wenn die Schlüssel nicht numerisch sind?

\n\n

Was tun, wenn Sie ein Element mit einem bestimmten Schlüssel hinzufügen möchten? Zum Beispiel ein assoziatives Array:

\n\n
<?php\n$user = [];\n$user['name'] = 'Max';\n$user['age'] = 30;\n?>
\n\n

Auch hier ist es einfach. Der Operator [] mit einem Schlüssel in den eckigen Klammern ($arr['key'] = value) funktioniert wie eine Zuweisung. Existiert der Schlüssel nicht, wird er erstellt. Existiert er, wird er überschrieben.

\n\n

Seien Sie jedoch vorsichtig: Wenn Sie versehentlich $user[] = 'Wert' neben einem assoziativen Array schreiben, fügt PHP einen numerischen Schlüssel hinzu

Blogs

Buchempfehlungen