Die Magie eines leeren Containers: Wie Sie PHP für sich arbeiten lassen
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, dann fügen Sie in einer Schleife Elemente hinzu. Scheint einfach genug, oder? Aber genau dieser Moment — das Hinzufügen von Elementen zu einem leeren PHP-Array — generiert tausende Fragen auf Stack Overflow. Warum? Weil Anfänger oft die Syntax verwechseln und erfahrene Entwickler verstehen wollen, was "unter der Haube" passiert.
In diesem Artikel zeigen wir Ihnen nicht nur, wie Sie den Code richtig schreiben. Wir werfen einen Blick in den PHP-Kern (Zend Engine), analysieren, wie sich $arr[] = $value von array_push() unterscheidet, und finden heraus, welche Überraschungen PHP 8.1 bereithält. Bereit? Los geht's!
Die häufigste Frage: Wie fügt man ein Element hinzu?
Wenn Sie Anfänger sind, denken Sie wahrscheinlich zuerst daran, etwas zu schreiben wie:
<?php
$myArray = array(); // leeres array
$myArray[] = 'first element';
$myArray[] = 'second element';
print_r($myArray);
?>
Dieser Code gibt aus:
Array
(
[0] => first element
[1] => second element
)
Funktioniert es? Ja. Aber warum? Lassen Sie uns aufschlüsseln, was der Operator [] tatsächlich tut.
Der Operator $arr[] = $value: Schnell und elegant
Wenn Sie $arr[] = $value schreiben, ruft PHP keine Funktionen auf. Stattdessen greift es direkt auf die interne Datenstruktur des Arrays zu (zend_array in Zend-Engine-Begriffen).
Was unter der Haube passiert:
- PHP prüft, ob das Array existiert. Wenn nicht, erstellt es ein neues (aber es ist immer besser, es explizit zu initialisieren:
$arr = []). - Es fügt das Element am Ende des Arrays hinzu und weist ihm automatisch den nächsten numerischen Schlüssel zu (0, 1, 2...).
- Wenn das Array leer war, erhält das erste Element den Schlüssel
0. - Kein Overhead durch einen Funktionsaufruf. Dies ist die leistungsfähigste Methode.
Tipp: Verwenden Sie $arr[] = ... immer dann, wenn Sie einfach ein Element am Ende hinzufügen müssen. Es ist schnell, lesbar und erfordert kein Importieren von Funktionen.
array_push(): Wenn Sie mehrere Elemente auf einmal hinzufügen müssen
Die zweite beliebte Methode ist die Funktion array_push():
<?php
$myArray = [];
array_push($myArray, 'first', 'second', 'third');
print_r($myArray);
?>
Das Ergebnis wird dasselbe sein. Aber es gibt Nuancen:
array_push()nimmt das Array als Referenz und fügt alle übergebenen Werte am Ende hinzu.- Es gibt die neue Anzahl der Elemente im Array zurück (seit PHP 7.3).
- Unter der Haube: Die Funktion ruft für jedes Element die interne Prozedur
zend_hash_next_index_insertauf. Das bedeutet, wenn Sie ein einzelnes Element hinzufügen, istarray_push()aufgrund des Overheads des Funktionsaufrufs etwas langsamer als$arr[] = ....
Wann verwenden: nur wenn Sie mehrere Elemente auf einmal hinzufügen müssen (2 oder mehr). Für ein einzelnes Element — vergessen Sie array_push, verwenden Sie [].
Leeres Array und Schlüssel: Was, wenn die Schlüssel nicht numerisch sind?
Was, wenn Sie ein Element mit einem bestimmten Schlüssel hinzufügen möchten? Zum Beispiel ein assoziatives Array:
<?php
$user = [];
$user['name'] = 'Ivan';
$user['age'] = 30;
?>
Das ist auch einfach. Der Operator [] mit einem Schlüssel innerhalb der eckigen Klammern ($arr['key'] = value) funktioniert als Zuweisung. Wenn der Schlüssel nicht existiert, wird er erstellt. Wenn er existiert, wird er überschrieben.
Aber seien Sie vorsichtig: Wenn Sie versehentlich $user[] = 'value' neben ein assoziatives Array schreiben, fügt PHP einen numerischen Schlüssel hinzu