foreachDas foreach-Konstrukt bietet eine einfache Möglichkeit über Arrays zu iterieren. foreach arbeitet nur mit Arrays und Objekten zusammen und gibt beim Versuch es mit einer Variablen mit einem anderen Datentypen oder einer nicht initialisierten Variablen zu benutzen einen Fehler aus. Es gibt zwei Schreibweisen:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
Die erste Form durchläuft das in array_expression angegebene Array. Bei jedem Durchlauf wird der Wert des aktuellen Elementes der Variable $value zugewiesen und der interne Array-Zeiger um eins erhöht (womit im nächsten Durchlauf das nächste Element betrachtet wird). Die zweite Form schreibt zusätzlich den Schlüssel des aktuellen Elementes in jedem Durchlauf in die Variable $key. Es ist möglich, die Objektiteration anzupassen.
Um Arrayelemente innerhalb der Schleife direkt verändern zu können, muss dem Variablennamen $value ein & vorangestellt werden. In diesem Fall wird dieser Variablen eine Referenz zugewiesen.
<?phpWarnung
Die Referenz eines $value auf das letzte Arrayelement bleiben auch nach der foreach-Schleife bestehen. Es wird empfohlen, diese durch unset zu zerstören. Andernfalls ist folgendes Verhalten zu beobachten:
<?phpVor PHP 5.5.0 ist eine Referenz auf $value nur dann möglich, wenn das Array referenzierbar ist (d.h. es ist eine Variable). Der folgende Code funktioniert erst ab PHP 5.5.0:
<?php
Eventuell haben Sie bemerkt, dass folgendes identisch funktioniert:
<?phpDas Folgende ist ebenfalls funktional identisch:
<?phpEinige weitere Beispiele die die Nutzung demonstrieren:
<?phpEntpacken verschachtelter Arrays mit list()PHP 5.5 hat die Fähigkeit hinzugefügt über Arrays von Arrays zu iterieren und dabei die verschachtelten Arrays in Schleifenvariablen zu entpacken, indem man ein list als Wert angibt. For example:
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: A: 1; B: 2 A: 3; B: 4 Es können auch weniger Elemente in list angegeben werden als das verschachtelte Array enthält. In diesem Fall werden übrige Werte im Array ignoriert:
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: 1 3 Gibt es nicht ausreichend Elemente im Array, um list zu füllen, wird eine Notice erzeugt.
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C: Changelog
|