PHP 4.3

6.6 Ablaufsteuerung in Schleifen: break

Häufig kann es beim Programmieren von Schleifen wichtig sein, eine Schleife zu verlassen, bevor sie ganz durchlaufen wurde. Das bedeutet, dass die Schleife beendet wird, sobald eine ganz bestimmte Bedingung zutrifft, obwohl die Schleifenbedingung noch nicht erfüllt ist.

Hierfür kann wieder das Schlüsselwort break benutzt werden, das wir bereits aus den switch-Anweisungen kennen. Technisch löst man solch ein Ausbrechen aus dem gesamten Durchlauf am besten durch die Verwendung einer integrierten if-Anweisung. Das folgende Skript, in dem $email einige E-Mail-Adressen zugewiesen werden, veranschaulicht das Vorgehen des Schleifenabbruchs mit break:

<?php

  $email[] = "napoleon@corsica.example.com";
  $email[] = "cesar@rome.example.com";
  $email[] = "joe@example.com";
  $email[] = "alexander@thegreat.example.com";
  $email[] = "michael@angelo.example.com";

  $i = 0;
  $anzahl = count($email);
  while ($i < $anzahl) {
    echo "Der derzeitige Arrayindex ist: " , $i , "<br>";
    if ($email[$i] == "joe@example.com") {
      echo "Joes E-Mail-Adresse ist dabei.";
      break;
    }
    $i++;
  }

?>

Übersetzt in einen kompletten Satz besagt die obige Schleife Folgendes:

"Durchlaufe die Schleife, solange $i kleiner als die Anzahl der Arrayelemente ist. Brich den Schleifendurchlauf jedoch sofort ab, wenn sich innerhalb des Arrays die E-Mail-Adresse 'joe@example.com' befindet."

Dies trifft in diesem Beispiel bei der dritten E-Mail-Adresse zu, daher sieht die Ausgabe im Browser folgendermaßen aus:

Browserausgabe:
Der derzeitige Arrayindex ist: 0
Die derzeitige Arrayindex ist: 1
Die derzeitige Arrayindex ist: 2
Joes E-Mail-Adresse ist dabei.

Nach dem zuletzt beschriebenen Schema mit break können natürlich auch alle anderen Schleifen in PHP vorzeitig abgebrochen werden. Die Vorgehensweise ist dabei immer ähnlich, wie der folgende Einsatz der for-Schleife zeigt:

<?php

  $email[] = "napoleon@corsica.example.com";
  $email[] = "cesar@rome.example.com";
  $email[] = "joe@example.com";
  $email[] = "alexander@thegreat.example.com";
  $email[] = "michael@angelo.example.com";

  for ($i = 0; $i < count($email); $i++) {
    echo "Der derzeitige Arrayindex ist: " , $i , "<br>";
    if($email[$i] == "joe@example.com") {
      echo "Joes E-Mail-Adresse ist dabei.";
      break;
    }
  }

?>

Kommentare (0)

Ihr Kommentar

Name