burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
06.02.2012, 10:34 Uhr - Impressum

Tutorials - Erste Schritte - Schleifen - die for-Schleife

Tutorials - Erste Schritte
Schleifen: die for-Schleife
Schleifen benutzt man, wenn man etwas ewig oft wiederholen muss.
So z.B. später mal in einer HTML-Tabelle.

Die erste Schleife, die ich hier einbaue ist die for-Schleife.
Diese Schleife wird benutzt, um etwas beliebig oft zu wiederholen, gleichzeitig ändert sie bei jedem Durchgang eine bestimmte Variable um einen Bestimmten Wert.

Beispiel: for($x = 0; $x <= 100; $x = $x + 10);

Die erste Angabe, $x = 0;, besagt, dass beim ersten Durchlauf der Schelife $x gleich 0 gesetzt wird.
Die zweite Angabe, $x <= 100;, besagt, dass die Schleife solang wiederholt wird, wie $x kleiner oder gleich 100 ist.
Die dritte Angabe, $x = $x + 10;, besagt, dass $x bei jeder Schleifenwiederholung um 10 größer wird.

Das Beispiel im Script, es wird jeweils $x ausgegeben:
<?php
for ($x = 0; $x <= 100; $x = $x + 10)
     echo "$x<br />\n";
     /* \n führt zu einem Zeilenumbruch im Quelltext, nicht allerdings in der HTML-Ansicht, hierfür ist <br /> zuständig.
Ich benutzte \n hier nur, um den Quelltext übersichtlicher erscheinen zu lassen, es hat keine Auswirkung auf das Script */

?>
Wie bei den if-Bedingungen sind hier keine geschweiften Klammern nötig, wenn nur ein Befehl wiederholt werden soll.
Sollen jedoch mehrere wiederholt werden, benötigt man sie
<?php
for ($x = 0; $x <= 100; $x = $x + 10)
{     /* Klammer wird geöffnet */

     $x_quadrat = $x * $x;     /* ein wenig Gerechne: * ist das Multiplikationszeichen */

     echo "Das Quadrat von " . $x . " ist: ";
     echo $x_quadrat;

     echo "<br />\n";

}     /* Klammer wird geschlossen */
?>
Wichtig !!! Beachte genau die Bedingungen, die du setzt !!!
Wenn du das > oder < falsch setzt oder statt $x = $x - 1 aus Versehen $x = $x + 1 schreibst, kann es passieren, dass das Script bis in alle Ewigkeiten läuft, was bedeuten kann, dass dein Server für eine gute Zeit nicht ansprechbar ist - im noch günstigsten Falle aber wird die for-Schleife gar nicht ausgeführt


Im folgenden Beispiel wird von der Zahl, die du in das Formular eingibst, bis zur 0 runtergezählt.
gesetzt in $_POST 'Startwert', 'absenden'
<?php     /* $_POST[Startwert] wird vom Formular übergeben */

$Startwert = $_POST[Startwert];

if($Startwert == "") {
     echo "Keine Zahl eingegeben";
     exit;     /* = Script sofort beenden */
}

if($Startwert < 10000) {     /* Sicherung, denn sonst könnte die ausgebene Datei größer sein als der Browser verträgt */
     for ($x = $Startwert; $x >= 0; $x = $x - 1) {     /* Beginn der Schleife */
          echo $x;
          echo "<br />\n";
     }
}
else echo "Bitte eine niedrigere Zahl eingeben";
?>
Countdown von:
(die Zahl bitte kleiner als 10000 wählen)
FormularQuelltext anzeigen
<html>
     <form method="post" action="/script.php">
          Countdown von: <input type="text" name="Startwert"><br />
          (die Zahl bitte kleiner als 10000 wählen)<br />
          <input type="submit" name="absenden" value="Script starten">
     </form>
</html>
Wenn du nun in das Formular einen Text eingibst (es muss nur eine Nicht-Zahl dabei sein)... was passiert dann ?
Falls du es noch nicht versucht hast, probriers doch mal aus.

Antwort:
In der Schleife wird dann $x gefüllt mit Text und die Schleife wird einmal durchlaufen.
Wenn das Script mit dem ersten Durchlauf fertig ist, probiert es, die Bedingung das erste mal zu überprüfen.
D.h. es fragt sich: ist $x noch immer größer oder gleich 0 ?
Die Antwort ist einfach: nein. Text ist gar nicht vergleichbar mit 0. Er bricht die Schleife ab.
Deshalb wird, wenn man in diesem Script Text in das Formular eingibt, die Schleife exakt ein einziges Mal durchlaufen.

Fazit: die for-Schleife prüft die Wahrheit ihrer Bedingung erst nach dem ersten Durchlauf.
Dies macht auch eine weitere Schleife, die do-while-Schleife (deutsch: tu solang wie)
© 2004-2005 - Impressum