Anzeige
Tutorialbeschreibung

PHP - Teil 12 - for-Schleifen

PHP - Teil 12 - for-Schleifen

for-Schleifen sind, im Gegensatz zu den bereits vorgestellten anderen beiden Schleifentypen, etwas komplexer, lassen sich aber dennoch einfach verwenden. Die allgemeine Syntax der for-Schleifen sieht folgendermaßen aus:
for(start, bedingung, iteration):

Das ist die einfachste Syntaxform. Die Initialisierung wird immer vor dem ersten Schleifendurchlauf evaluiert. Eingeleitet wird dieser Schleifentyp über das Schlüsselwort for.

So macht die folgende Schleife nichts anderes, als von 1 bis 10 zu zählen und den jeweils aktuellen Wert auszugeben.
<?php
for ($i = 1; $i <= 10; $i++){
   echo $i . "<br />";
}
?>

Im Browser sieht das folgendermaßen aus:

Bilder



 
Auch bei den for-Schleifen kann die nun schon bekannte alternative Syntax mit dem Doppelpunkt verwendet werden. Das ist die allgemeine Syntaxform:
<?php
for (expr1; expr2; expr3):
    statement
    ...
endfor;
?>

Umgemünzt auf das zuvor gezeigte for-Beispiel ergibt sich die folgende Syntax:
<?php
for ($i = 1; $i <= 10; $i++):
   echo $i . "<br />";
endfor;
?>

Für welche der Varianten ihr euch letztendlich entscheidet, bleibt dabei euch überlassen.


Arrays durchlaufen

Auch wenn Arrays erst noch vorgestellt werden - so viel schon an dieser Stelle: Arrays lassen sich mit for-Schleifen durchlaufen. Wie so etwas aussieht, zeigt das folgende Beispiel:
<?php
    $namen = array("John", "Michael", "Sven", "Stefan", "Peter");
    for($i=0; $i < 5; $i++){
        echo $namen[$i]."<br />";
    }
?>

Hier werden die innerhalb des Arrays enthaltenen Namen untereinander im Dokument ausgegeben. Neben for-Schleifen eignen sich übrigens auch forearch-Schleifen sehr gut zum Durchlaufen von Arrays.

 
Was es mit dieser Schleifenart auf sich hat, wird in einem späteren Tutorial gezeigt, wenn es ganz detailliert um Arrays geht.

Bilder



 

Schleifen abbrechen

Im Zusammenhang mit while-Schleifen habt ihr die Möglichkeit kennengelernt, diese mit break abzubrechen. Dieses break lässt sich auch bei for-Schleifen verwenden. Die folgende Syntax zeigt ein entsprechendes Beispiel:
<?php
for ($i = 1; $i <= 10; $i++){
    if ( $i > 6 ){
        break;
    }
    echo $i . "<br />";
}
?>

Normalerweise würde die Schleife für die Ausgabe der Zahlenwerte 1 bis 10 sorgen. Dem ist allerdings nicht so. Schuld daran ist diese Anweisung:
if ( $i > 6 ){
   break;
}

Denn hier wird überprüft, ob der Wert der Variablen $i größer als 6 ist. Ist dies der Fall, greift break, die Schleife wird also beendet.

Bilder



 
Mit der Funktion die() steht noch eine alternative Variante zum Abbrechen von Skripten zur Verfügung. Ruft man diese Funktion innerhalb eines Skripts auf, wird das Ausführen dieses Skript gestoppt und die der die()-Funktion übergebene Zeichenkette ausgegeben. Sinnvoll ist der Einsatz von die() immer dann, wenn Skripte unverzüglich beendet werden sollen, sobald eine angegebene Bedingung zutrifft.

Wie sich die() in der Praxis einsetzen lässt, zeigt das folgende Beispiel. Darin wird die() zur Passwortkontrolle verwendet. Zunächst das HTML-Formular. Das besteht lediglich aus einem Passwortfeld und einer Senden-Schaltfläche.
<form action="formular.php" method="post">
     <input  type="password" name="passwort" />
     <input  type="submit" />
</form>

Das eigentliche Skript sieht nun folgendermaßen aus:
<?php
  if  (isset($_POST['passwort'])) $passwort = $_POST['passwort'];
    $pass[0] = "ddddd";
    $pass[1] = "dfffff";
    $pass[2] = "hasaans";
    $pass[3] = "dfgs";
    $pass[4] = "sdfsdf";
    $pass[5] = "sssss";
    $ok = false;
    for ($i=0; $i<count($pass); $i++) {
      if($pass[$i] == $passwort) {
        echo  "<p>Herzlich Willkommen im Mitgliederbereich</p><br  />";
        $ok = true;
        break; 
      }
    }
    if(!$ok) {
      die("Sie haben keinen  Zugriff");
    }
    echo  "<p>Die neuesten Informationen...</p>";
?>

 
Über die einzelnen $pass[x]-Anweisungen werden mögliche Passwörter abgefragt. Gibt es eine Übereinstimmung, wird der Mitgliederbereich angezeigt.

Bilder



 
Sollte das Passwort allerdings falsch sein, wird die for-Schleife sofort mittels die()-Funktion abgebrochen.

Bilder



 
Alternativ zu die() gibt es übrigens auch noch die Funktion exit(). Ob ihr die() oder exit() zum Abbrechen von Skripten einsetzt, bleibt dabei letztendlich euch überlassen. Ausführliche Informationen zu exit() findet ihr unter http://php.net/manual/de/function.exit.php. Das folgende Beispiel zeigt einen typischen Einsatz von exit().
<?php
$dateiname = '/dateipfad';
$datei = fopen($dateiname, 'r')
    or exit("Die Datei $dateiname kann nicht geöffnet werden.");
?>

Hier wird versucht, auf eine Datei zuzugreifen. Sollte das – aus welchem Grund auch immer – nicht klappen, wird die Fehlermeldung Die Datei xxx kann nicht geöffnet werden ausgegeben.


Wann welchen Schleifentyp verwenden?

Nachdem ihr nun die for- und die while-Schleifen kennengelernt habt, stellt sich euch vielleicht die berechtigte Frage, wann man welche Variante einsetzt? Bevor diese Frage geklärt wird, zunächst noch ein allgemeiner Hinweis. Denn es ist immer möglich, aus einer while- eine for-, und aus einer for- eine while-Schleife zu machen.

Aus der folgenden while-Schleife soll eine for-Schleife gemacht werden.
<?php
while (bedingung) {
   anweisungen;
}
?>

Hier wird die Anweisung von while einfach in den for-Rumpf übernommen.
<?php
for (bedingung) {
   anweisungen;
}
?>

Andersherum funktioniert das dann genau so. Zunächst die for-Schleife.
<?php
for (start; bedingung; durchlauf) {
    anweisungen;
}
?>

Diese lässt sich folgendermaßen umwandeln:
<?php
start;
while (bedingung) {
    anweisungen;
    durchlauf;
}
?>

Der Aufwand für die Definition einer while- oder einer for-Schleife ist somit kein Kriterium, das wirklich zählt. Wann aber greift man nun tatsächlich besser zur while- und wann lieber zur for-Schleife?

for-Schleifen setzt man üblicherweise immer dann ein, wenn die Anzahl der Schleifendurchläufe von Anfang an bekannt ist.
<?php
for ($i=0; $i<10; $i++) {
    …
}
?>

Anders sieht es bei while-Schleifen aus. Die kommen normalerweise immer dann zum Einsatz, wenn die Anzahl der Schleifendurchläufe nicht bekannt ist. Daher werden while-Schleifen beispielsweise oftmals eingesetzt, wenn Informationen aus Dateien oder aus Datenbanken ausgelesen werden sollen.
<?php
while (auslesen()) {
    ...
}
?>

Hinsichtlich des Auslesens von Dateien könnte man deren Dateigrößte zwar mittels filesize ermitteln, dennoch wird hier üblicherweise auf while-Schleifen gesetzt.
<?php
while (!Ende()) {
    …
}
?>

Noch einmal zusammenfassend: Üblicherweise setzt man for-Schleifen immer dann ein, wenn die Anzahl der Durchläufe bekannt ist. Anderenfalls verwendet man while-Schleifen.

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 18:15

Ein lehrreiches Tutorial! Vielen Dank!

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 07.10.2016 - 13:14

Vielen Dank, tolles Video.

Portrait von dmtw2107
  • 16.11.2013 - 09:36

verständlich und toll erklärt danke für das tutorial

Portrait von kay_weisheit
  • 27.05.2011 - 16:42

Bisher eine wirklich tolle Reihe !! Hab mir bis jetzt alle runtergeladen. Alles gut nachvollziehbar !!

Danke dafür :)

Gruß Kay

x
×
×