PHP 4.3

6.5 Die foreach-Schleife

Eine weitere Schleifenart, die PHP seit der Version 4 bietet, ist die foreach-Schleife. Sie ist ebenfalls gut geeignet, um Arrays zu durchlaufen. Dabei erweist sie sich im Zusammenhang mit assoziativen Arrays sogar als besonders wirkungsvoll.

Sie hat folgende Syntax:

<?php

  foreach ($array as $value) {
    echo "Der aktuelle Wert ist: " . $value . "<br>";
  }

?>

Will man auch an den Schlüssel des Array-Elements kommen, so verwendet man folgende Variante:

<?php

  foreach ($array as $key => $value) {
    echo "Das Element " . $key . " enthält den Wert: " . $value . "<br>";
  }

?>

Während die erste Variante das Array durchläuft und nur die Werte der Variablen $value zuweist, initialisiert die zweite Variante, wie bereits angesprochen, ebenso die Variable $key, also den Schlüssel des Array-Elements.

Die foreach-Schleife benötigt keine Angabe zur Anzahl der vorhandenen Arrayelemente, da sie deren Anzahl selbst ermittelt. Diese Tatsache spiegelt sich bereits im Namen der Schleife wider: for each = für jedes (Element).

Die Indizes oder Keys eines Arrays haben keinen Einfluss auf die Reihenfolge des Durchlaufs der foreach-Schleife. PHP-intern erstellt foreach eine Kopie des angegebenen Arrays und durchläuft diese Kopie nach dessen interner Ordnung, die nicht notwendigerweise der "richtigen" Reihenfolge entspricht. Aus diesem Grund mag die Reihenfolge, mit der foreach ausliest, unter Umständen als zufällig erscheinen.

Im folgenden Beispiel wird der Wert des Elements einer Variablen zugewiesen und die Anweisungen in der Schleife werden ausgeführt. Wenn der Anweisungsteil abgearbeitet worden ist, wird der nächste Variablenwert des Arrays ausgelesen und dieser der Variablen $element übergeben. Dieser Prozess wird solange wiederholt, bis kein weiteres Element mehr im Array gefunden wird. Dies ist für die foreach-Schleife die Abbruchbedingung.

Das folgende Beispiel veranschaulicht diese Vorgehensweise:

<?php

  $frucht[0] = "Kirschen";
  $frucht[2] = "Kiwis";
  $frucht[6] = "Äpfel";
  $frucht[3] = "Bananen";
  $frucht[8] = "Mangos";
  $frucht[5] = "Orangen";
  $frucht[1] = "Melonen";
  $frucht[7] = "Feigen";
  $frucht[4] = "Birnen";

  foreach ($frucht as $element) {
    echo $element . "<br>";
  }

?>

Die Browserausgabe zeigt, in welcher Reihenfolge die Arrayelemente angelegt wurden. Die Indizes der Arrayelemente haben, wie gesagt, bei der foreach-Schleife keinen Einfluss auf die Reihenfolge der Elemente.

Browserausgabe:
Kirschen
Kiwis
Äpfel
Bananen
Mangos
Orangen
Melonen
Feigen
Birnen

Kommentare (0)

Ihr Kommentar

Name