PHP 4.3

6.7 Ablaufsteuerung in Schleifen: continue

Neben dem Schleifenabbruch mit break, bei dem Sie selbst die Konditionen für den Abbruch definieren, gibt es noch eine weitere Möglichkeit, Schleifen in ihrer Ausführung zu beeinflussen. Dazu dient das Schlüsselwort continue, das den gesamten folgenden Anweisungsteil überspringt. Im Unterschied zu break, das den Programmablauf nach der Schleife weiter ausführt, bewirkt continue eine Rückkehr des Programmablaufs zurück zur Schleifenbedingung, um nach der Bedingungsprüfung die nächste Iteration zu durchlaufen. In der Praxis ist die Verwendung von continue aber eher unüblich.

Hierfür haben wir folgendes Beispiel vorbereitet: Das Skript enthält ein Array; seine Elemente eine Reihe von Passwörtern, die Zugriff auf einen geschützten Website-Bereich gewähren. Mittels einer do-while-Schleife wird das Array durchlaufen. Sofern die Variable $user_pass nicht mit dem jeweils aktuellen Array-Element übereinstimmt, wird die Anweisung continue aufgerufen. Erwartungsgemäß führt PHP dadurch sofort die Bedingungsprüfung der Schleife durch und fährt mit dem nächsten Array-Eintrag fort. Stimmt der Wert der Variablen hingegen mit dem Array-Eintrag überein, wird einer anderen Variable, $ok, der Wert true zugewiesen. Nach Abschluss der Schleife, prüft eine if-Anweisung den Wert von $ok und reagiert entsprechend. Dieses Skript ist für den praktischen Einsatz nicht empfehlenswert und dient nur der Veranschaulichung der continue-Anweisung. Zum einen sollten Passwörter nie als lesbarer Text gespeichert vorliegen oder gar auf dem Bildschirm ausgegeben werden (mehr dazu in der letzten Lerneinheit), zum anderen sollte die Passworteingabe natürlich von einem Formularfeld stammen und nicht, wie es das Skript zeigt, in einer Variablen ($user_pass) festgesetzt sein.

<?php

  $user_pass = "Hans";

  $pass[0] = "Gott";
  $pass[1] = "Lisa";
  $pass[2] = "geheim";
  $pass[3] = "p910";
  $pass[4] = "Monitor";
  $pass[5] = "Computer";
  $pass[6] = "Hans";
  $pass[7] = "Button";
  $pass[8] = "magic";
  $pass[9] = "IlovemyMom";

  $ok = false;
  $i = 0;

  do {
    if ($pass[$i] != $user_pass) { continue; }
    $ok = true;
    echo "Password gefunden - es lautet: <i>".$pass[$i]."</i><br>";
  } while (++$i < count($pass));

  if(!$ok) { echo "Kein Zugang für Sie"; }

?>

Interessant ist bei der eingesetzten while-Schleife die Inkrementierung des Zählers $i. In dieser, ebenfalls gültigen, Syntax befindet sich die Inkrementierung nicht im Anweisungsteil, sondern ist bereits in der Bedingungsprüfung enthalten.

Es soll nicht unerwähnt bleiben, dass die Aufgabe des Skripts auch ohne continue recht einfach gelöst werden könnte. Das ist meist so, und aus dieser Tatsache heraus erklärt sich auch die spärliche Verwendung der Anweisung in der Praxis. Übrigens behandelt die do-while-Schleife natürlich den Umstand nicht richtig, dass das Array die Länge 0 haben könnte.

Kommentare (0)

Ihr Kommentar

Name