Kind mit Eis

PHP Schleifen



Ideen: M. Metz, S. Lipka, K. P. Boneberger Elektronikschule Tettnang
T. Wegener, "PHP5 Grundlagen Erstellung dynamischer Webseiten", Herdt Verlag, 2008
S. Heller, "PHP 8.0 Dynamische Webseiten erstellen", Herdt Verlag, 2021
https://www.learnjavaonline.org


Werden auf einer Internetseite Elemente wiederholt dargestellt, lässt sich dies mit Hilfe von Schleifen realisieren. Schleifen gehören zu den wesentlichen Kontrollstrukturen für die Automatisierung von Webseiten. Man spricht auch von dynamisch erstellten Internetseiten.

In diesem Artikel wird der grundsätzliche Aufbau von Schleifen mit Initialisierung, Bedingung und Änderung erklärt. Ein besonderes Augenmerk liegt hierbei auf der for-Schleife zum Zählen, dem inkrementieren und dekrementieren.

Der Einkaufswagen 🛒 Wiederholungen beim Erstellen von Webseiten



Einkaufswagen

Ich werde wohl nie den Moment vergessen, als ich diesen Einkaufswagen eine Stunde unbeaufsichtigt in einem großen Einkaufszentrum in Chiang Mai - Nordthailand stehen lies. Als ich zurück kam stand er immer noch an Ort und Stelle und kein einziger Artikel fehlte. Niemand, aber auch kein einziger, hatte irgendetwas entwendet.

Beim Onlineshopping kann der Einkaufswagen nicht so einfach entwendet werden. Jeder Artikel wird sturkturiert auf die gleiche Art und Weise dargestellt: Foto, Überschrift, Beschreibung, Menge, Preis u.s.w. Und schon haben wir einen sich wiederholenden Prozess, welcher mit Hilfe einer Schleife vereinfacht wird.

Befinden sich bspw. drei Gegenstände im Warenkorb, so werden dreimal Photos, dreimal Überschriften, dreimal Beschreibungen u.s.w. aus einer Datenbank abgerufen.

Online-Einkaufswagen

Die for-Schleife Daten wiederholt ausgeben



Ist die Anzahl der Wiederholungen grundsätzlich bekannt werden mit Hilfe der for-Schleife (auch Zählschleife) die Anweisungen wiederholt.
<?php
for($i = 0; $i < 5; $i++){
  //diese Anweisung wird 5mal wiederholt
}?>

Der Schleifenkopf besteht aus dem Schlüsselwort for gefolgt von Klammern zwischen denen mit Semikolon getrennt drei Anweisungen stehen:

  1. Initialisierung $i = 0: Legt den Startwert beim Zählen fest. Beachte: In der Informatik fängt man bei Null an zu zählen.
  2. Bedingung $i < 5: Solange die Bedingung wahr ist werden die Anweisungen im Schleifenkörper immer wieder ausgeführt. Erst wenn die Bedingung den boolschen Ausdruck "false" ergibt wird die Wiederholung abgebrochen.
  3. Änderung $i++: nach jedem Durchlauf des Schleifenkörpers wird der Variablenwert inkrementiert, hier um eins erhöht.

Der Schleifenkörper steht zwischen zwei geschweiften Klammern. Hier stehen die zu wiederholenden Anweisungen. Man beachte, dass bei einer einzeiligen zu wiederholenden Anweisung die geschweiften Klammern optional sind.

Einkaufswagen 🛒
Position 1
Position 2
Position 3
Position 4
Position 5
  • <?php
    for($i=0; $i<5; $i++){
       echo 'Position '.($i+1).'<br>';
    }
    ?>

Café und for-Schleife

Für jede 5 Euro erhält man einen Treuestempel. Bei 10 Stempel erhält man ein Freigetränk ☕.


Schlechter Kunde!

  • <form method="GET" action="#formulareingabe">
    Für jede 5 Euro erhält man einen Treuestempel. Bei 10 Stempel erhält man ein Freigetränk ☕.
      <input type="number" class="form-control" name="amount">
      <button type="submit" class="btn btn-outline-secondary">Treuestempel einreichen</button>
    </form>

    <br>
    <?php
    $stampCount = (int) ($_GET['amount']/5);
    if($stampCount > 0){?>
      <?php for($i=0; $i<$stampCount; $i++){?>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" checked>
        </div>
      <?php }?>
      <p>Treuepunkte: <?= $stampCount ?><br>
      Anzahl Freigetränke ☕ <?= (int) ($stampCount/10) ?></p>
    <?php } ?>

Inkrementieren und Dekrementieren hoch- und runterzählen



Glasschütte mit Limetten

Möchte man Variablenwerte erhöhen oder verringern, kann man dies durch inkrementieren oder dekrementieren erreichen. Liegen in einer Glasschütte drei Limetten und es kommt eine hinzu, sind es insgesamt 4 Stück.

Beim Programmieren: Ist in einer Variable der Wert 3 gespeichert und kommt eins hinzu, ist der neue Wert 4. Dabei lässt sich das Inkrementieren und Dekrementieren grundsätzlich durch alle Rechenoperatoren +, -, *, / erreichen.

Inkrementieren oder Hochzählen
$i = $i + 1 kurz: $i++, $i+=1 oder ++$i
$i = $i + 2 kurz: $i+=2
$i = $i * 1.2 kurz: $i*=1.2
$i = $i / 0.9 kurz: $i/=0.9

Dekrementieren oder Runterzählen
$i = $i - 1 kurz: $i--, $i-=1 oder --$i
$i = $i - 2 kurz: $i-=2
$i = $i * 0.75 kurz: $i*=0.75
$i = $i / 2.3 kurz: $i/=2.3

Inkrementieren und Dekrementieren ∆

Erhöhung um 1:
0 1 2 3 4 5 6 7 8 9 10

Erhöhung um 2:
0 2 4 6 8 10 12 14 16 18 20

Erhöhen vor der ersten Ausgabe:
1 4 7 10 13 16 19

Verringerung um 1:
10 9 8 7 6 5 4 3 2 1 0

jährliches Wachstum von 10 %:
100 110 121 133 146 161 177 194

  • Erhöhung um 1:<br>
    <?php for($i=0; $i<=10; $i++) echo $i." ";?><br><br>
    Erhöhung um 2:<br>
    <?php for($i=0; $i<=20; $i+=2) echo $i." ";?><br><br>
    Erhöhen vor der ersten Ausgabe:<br>
    <?php for($i=0; $i<=20; $i+=2) echo ++$i." ";?><br><br>
    Verringerung um 1:<br>
    <?php for($i=10; $i>=0; $i--) echo $i." ";?><br><br>
    jährliches Wachstum von 10 %:<br>
    <?php for($i=100; $i<=200; $i*=1.1) echo (int) $i." ";?><br>


Übung 1 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

for($i = 0; $i < 5; $i++) echo $i." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 0 1 2 3 4 5
  2. 0 2 4 6 8
  3. 5 4 3 2 1 0
  4. 0 1 2 3 4


for($i = 0; $i <= 5; $i++) echo $i." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 0 2 4 6 8
  2. 0 1 2 3 4 5
  3. 5 4 3 2 1 0
  4. 0 1 2 3 4



for($i = 0; $i < 10; $i+=2) echo $i." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 0 1 2 3 4 5
  2. 5 4 3 2 1 0
  3. 0 2 4 6 8
  4. 0 1 2 3 4


for($i = 5; $i >= 0; $i--) echo $i." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 5 4 3 2 1 0
  2. 5 4 3 2 1
  3. 0 2 4 6 8
  4. 0 1 2 3 4


for($i = 0; $i <= 10; $i++) echo ++$i." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 1 3 5 7 9 11
  2. 0 1 2 3 4 5 6 7 8 9 10
  3. 0 2 4 6 8 10
  4. 1 2 3 4 5 6 7 8 9 10 11


for($i = 0; $i <= 10; $i++) echo $i++." ";
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. 1 3 5 7 9 11
  2. 0 1 2 3 4 5 6 7 8 9 10
  3. 0 2 4 6 8 10
  4. 1 2 3 4 5 6 7 8 9 10 11

Entspann dich erstmal ...



In der Natur wiederholt sich so Vieles: Es sind Milliarden von Fischen, Korallen, Palmen u.v.m. Und doch ist jede Pflanze und jedes Tier einzigartig.

In diesem Video bekommst Du einen kurzen Einblick in die Einzigartigkeit der Inselwelt Indonesiens.

Übung 2 Schleifen und Entscheidungen mit Blockly Maze

Spiel blockly maze

Maze ist ein Labyrinth. Hier bekommst du spielerisch eine Einführung in Schleifen und Entscheidungen. Es beginnt einfach, aber jedes Level ist anspruchsvoller als das letzte.


Übung 3 Treuestempel auswerten

Treuestempelkarte eines Coffeeshops

In einem Café gewährt der Inhaber folgenden Treuevorteil: Für jede 5 EUR bekommt man einen Treuestempel. Für 10 Stempel erhält man einen Rabatt im Wert von 3 EUR.

  1. Entwirf mit Hilfe einer for-Schleife ein Checkbox-Formular zur Eingabe der Treuestempel.
  2. Programmiere die Auswertung. Die Anzahl der Treuestempel soll als Wert und Grafik angegeben werden.
  3. Summiere die Anzahl der Treuestempel bei mehrfacher Eingabe.

Übung 4 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Ausgabe: 1 2 3 4 5
Bestimme den passenden Quelltext.
Wähle eine Antwort.

  1. echo 1 2 3 4 5;
  2. for($i=0;$i<5;$i++) echo $i+1." ";
  3. for($i=1;$i<=5;$i++) echo $i+1." ";
  4. for($i=0;$i<5;$i++) echo $i." ";


Ausgabe: 1, 2, 3, 4, 5,
Bestimme den passenden Quelltext.
Wähle eine Antwort.

  1. echo 1, 2, 3, 4, 5,
  2. for($i=1;$i<=5;$i++) echo $i;
  3. for($i=0;$i<5;$i++) echo $i.",";
  4. for($i=1;$i<6;$i++) echo $i.',';



Ausgabe: 5 4 3 2 1 0
Bestimme den passenden Quelltext.
Wähle zwei Antworten.

  1. for($i=5;$i>=0;$i-=1) echo $i." ";
  2. for($i=5;$i>=0;$i++) echo $i." ";
  3. for($i=5;$i>=0;$i--) echo $i+1;
  4. echo '5 4 3 2 1 0';


Ausgabe: 10 8 6 4 2 0
Bestimme den passenden Quelltext.
Wähle zwei Antworten.

  1. for($i=10;$i>=0;$i-=2) echo $i." ";
  2. for($i=10;$i>=0;$i--) echo $i+1." ";
  3. for($i=10;$i>=0;$i--) echo $i--." ";
  4. echo 10 8 4 2 0;



Wortliste und Satzbausteine



die for-Schleife, -n eine Anweisung zum Wiederholen von Programmteilen
for($i = 0; $i < 4; $i++){...}
initialisieren einer Variable einen Startwert zuweisen
$i = 0
die Bedingung prüfen den Wert einer Variable überprüfen
$i < 5
ändern den Wert einer Variable hoch- oder runterzählen
$i++
inkrementieren hochzählen eines Wertes
$i=$+1
dekrementieren runterzählen eines Wertes
$i=$i-1