foreach
(PHP 4, PHP 5, PHP 7, PHP 8)
  Das 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 (iterable_expression as $value)
    statement
foreach (iterable_expression as $key => $value)
    statement
  Die erste Form durchläuft das in 
  iterable_expression angegebene Iterable. 
  Bei jedem Durchlauf wird der Wert des aktuellen Elementes der
  Variable $value zugewiesen.
 
  Die zweite Form schreibt zusätzlich den Schlüssel des aktuellen
  Elementes in jedem Durchlauf in die Variable $key.
 
  Es ist zu beachten, dass foreach den internen Array-Zeiger
  nicht verändert, der von Funktionen wie current() und 
  key() verwendet wird.
 
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.
  
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr ist nun array(2, 4, 6, 8)
unset($value); // Entferne die Referenz auf das letzte Element
?>
   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:
  
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr ist jetzt array(2, 4, 6, 8)
// ohne ein unset($value), bleibt $value weiterhin eine Referenz auf das letzte Element: $arr[3]
foreach ($arr as $key => $value) {
    // $arr[3] wird mit jedem Wert von $arr aktualisiert...
    echo "{$key} => {$value} ";
    print_r($arr);
}
// bis schließlich der vorletzte Wert in den letzten Wert kopiert wird
// Ausgabe:
// 0 => 2 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 2 )
// 1 => 4 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 4 )
// 2 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
// 3 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
?>
Es ist möglich, über die Werte eines konstanten Arrays mittels Referenz zu iterieren:
<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
?>
Hinweis:
foreachunterstützt die Fehlerunterdrückung mittels@nicht.
Einige weitere Beispiele, die die Nutzung demonstrieren:
<?php
/* foreach Beispiel 1: Nur Werte */
$a = array(1, 2, 3, 17);
foreach ($a as $v) {
    echo "Aktueller Wert von \$a: $v.\n";
}
/* foreach Beispiel 2: Werte (mit Schreibweise für Zugriff zur Veranschaulichung) */
$a = array(1, 2, 3, 17);
$i = 0; /* nur zur Veranschaulichung */
foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    $i++;
}
/* foreach Beispiel 3: Schlüssel und Wert */
$a = array(
    "eins" => 1,
    "zwei" => 2,
    "drei" => 3,
    "siebzehn" => 17
);
foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}
/* foreach Beispiel 4: Mehrdimensionale Arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}
/* foreach Beispiel 5: Dynamische Arrays */
foreach (array(1, 2, 3, 4, 5) as $v) {
    echo "$v\n";
}
?>
Entpacken verschachtelter Arrays mit list()
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Es ist möglich, über Arrays von Arrays zu iterieren und dabei die verschachtelten Arrays in Schleifenvariablen zu entpacken, indem man ein list() als Wert angibt.
For example:
<?php
$array = [
    [1, 2],
    [3, 4],
];
foreach ($array as list($a, $b)) {
    // $a enthält das erste Element des verschachtelten Arrays
    // und $b enthält das zweite Element
    echo "A: $a; B: $b\n";
}
?>
Das 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:
<?php
$array = [
    [1, 2],
    [3, 4],
];
foreach ($array as list($a)) {
    // Beachten Sie, dass es hier kein $b gibt.
    echo "$a\n";
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
1 3
Gibt es nicht ausreichend Elemente im Array, um list() zu füllen, wird eine Notice erzeugt.
<?php
$array = [
    [1, 2],
    [3, 4],
];
foreach ($array as list($a, $b, $c)) {
    echo "A: $a; B: $b; C: $c\n";
}
?>
Das 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:
 
                     
                     
                     
                     
                    
 
          