5. Unterrichtsblock

PHP Schleifen

Wenn Sie Code schreiben, möchten Sie häufig, dass derselbe Codeblock immer und immer wieder ausgeführt wird. Anstatt also mehrere fast gleiche Codezeilen in ein Skript einzufügen, können wir Schleifen verwenden.

Schleifen werden verwendet, um denselben Codeblock immer wieder auszuführen, solange eine bestimmte Bedingung wahr ist.

In PHP haben wir die folgenden Schleifentypen:

  • while– Durchläuft einen Codeblock so lange, wie die angegebene Bedingung wahr ist
  • do...while– Durchläuft einen Codeblock einmal und wiederholt dann die Schleife, solange die angegebene Bedingung wahr ist
  • for– Durchläuft einen Codeblock eine bestimmte Anzahl von Malen
  • foreach– Durchläuft einen Codeblock für jedes Element in einem Array

Die folgenden Sektionen erläutern und geben Beispiele für jeden Schleifentyp.

PHP while-Schleife

Die while-Schleife führt einen Codeblock aus, solange die angegebene Bedingung wahr ist.

// Syntax

while (Bedingung ist wahr) {
  auszuführender Code;
}
<?php
/*
  Das folgende Beispiel zeigt die Zahlen von 1 bis 10:
*/

$x = 1;

while($x <= 10) {
  echo "Schritt: $x <br>";
  $x++;
}

/*
  ERKLÄRUNG
  $x = 1; - Initialisiert den Schleifenzähler ($x) und setzt diesen auf den Startwert 1
  $x <= 10 - Setzt die Schleife fort, solange $x kleiner oder gleich 10 ist
  $x++; - Erhöht den Schleifenzählerwert um 1 für jede Iteration (Inkrementierungs Operator)
*/

?>

Aufgabe

Baue o.g. Code so um, dass er von 20 bis auf 5 herunterzählt.

<?php
$x = 0;

while($x <= 100) {
  echo "Erhöhung auf: $x <br>";
  $x+=10;
}

/*
  ERKLÄRUNG
  $x = 0; - Initialisiert den Schleifenzähler ($x) und setzt den Startwert auf 0
  $x <= 100 - Setzt die Schleife fort, solange $x kleiner oder gleich 100 ist
  $x += 10; - Erhöht den Schleifenzählerwert um 10 für jede Iteration
*/

?>

Aufgabe

Baue o.g. Code so um, dass die Schleife beim Startwert 1000 beginnt und der Startwert solange durch 2 geteilt wird, bis der Wert 50 unterschritten ist.

PHP do…while-Schleife

Die do...while-Schleife führt den Codeblock immer einmal aus, überprüft dann die Bedingung und wiederholt die Schleife, solange die angegebene Bedingung wahr ist.

// Syntax

do {
  auszuführendes Programm;
} while (Bedingung ist wahr);
<?php
/*
  Das folgende Beispiel setzt zuerst die Variable $x auf den Startwert 1
  Dann schreibt die do while-Schleife eine Ausgabe und inkrementiert anschließend die Variable $x um 1
  Danach wird die Bedingung überprüft (ist $x kleiner oder gleich 10?)
  Die Schleife wird so lange weiterlaufen wie $x kleiner oder gleich 1 ist
*/

$x = 1;

do {
  echo "Zählerstand: $x <br>";
  $x++;
} while ($x <= 10);
?>

Aufgabe

Baue o.g. Code so um, dass die Schleife beim Startwert 20 beginnt und der Startwert solange dekrementiert, bis der Wert 5 unterschritten ist.

Hinweis: In einer do...while-Schleife wird die Bedingung NACH der Ausführung der Anweisungen innerhalb der Schleife getestet. Das bedeutet, dass die do...while-Schleife ihre Anweisungen mindestens einmal ausführt, selbst wenn die Bedingung falsch ist. Siehe Beispiel unten.

<?php
/*
  Dieses Beispiel setzt den Startwert auf 6, führt die Schleife aus und überprüft anschließend die Bedingung:
*/

$x = 6;

do {
  echo "Zählerstand: $x <br>";
  $x++;
} while ($x <= 5);
?>

PHP for-Schleife

Die for-Schleife wird verwendet, wenn Sie im Voraus wissen, wie oft das Skript ausgeführt werden soll.

// Syntax

for (init counter; test counter; increment counter) {
  Programm, dass bei jeder Iteration ausgeführt wird;
}

Parameter:

  • init counter: Initialisiert den Schleifenzählerwert
  • test counter: Wird für jede Schleifeniteration ausgewertet. Wenn es zu TRUE ausgewertet wird, wird die Schleife fortgesetzt. Wenn es zu FALSE ausgewertet wird, endet die Schleife.
  • increment counter: Erhöht den Wert des Schleifenzählers
<?php
/*
  Das folgende Beispiel zeigt die Zahlen von 0 bis 10:
*/

for ($x = 0; $x <= 10; $x++) {
  echo "Zählerstand: $x <br>";
}

/*
  ERKLÄRUNG
  $x = 0; - Initialisiert den Schleifenzähler ($x) und setzt den Startwert auf 0
  $x <= 10; - Setzt die Schleife fort, solange $x kleiner oder gleich 10 ist
  $x++ - Erhöht den Zählerwert um 1 für jede Iteration
*/

?>

Aufgabe

Baue o.g. Code so um, dass die Schleife beim Startwert 20 beginnt und der Startwert solange dekrementiert, bis der Wert 5 unterschritten ist.

<?php
/*
  Dieses Beispiel zählt in Zehnerschritten bis 100:
*/

for ($x = 0; $x <= 100; $x+=10) {
  echo "Zählerstand: $x <br>";
}

/*
  ERKLÄRUNG
  $x = 0; - Initialisiert den Schleifenzähler ($x) und setzt den Startwert auf 0
  $x <= 100; - Setzt die Schleife fort, solange $x kleiner oder gleich 100 ist
  $x+=10 - Erhöht den Zählerwert um 10 für jede Iteration
*/
?>

Aufgabe

Baue o.g. Code so um, dass die Schleife beim Startwert 1000 beginnt und der Startwert solange durch zwei geteilt wird, bis der Wert 5 unterschritten ist.

PHP-foreach-Schleife

Die foreach-Schleife funktioniert nur bei Arrays und wird verwendet, um jedes Schlüssel/Wert-Paar in einem Array zu durchlaufen.

// Syntax

foreach ($array as $wert) {
Programm, das ausgeführt werden soll;
}
<?php
/*
  Das folgende Beispiel gibt die Werte des angegebenen Arrays ($obst) aus
  Bei jedem Schleifendurchlauf wird $wert der Wert des aktuellen Array-Elements zugewiesen
  und der Array-Zeiger um eins weiterbewegt, bis das letzte Array-Element erreicht wurde
*/

$obst = array("Apfel", "Birne", "Zwetschge", "Kirsche");

foreach($obst as $wert) {
  echo "$wert <br>";
}

/*
  ERKLÄRUNG
  $obst - enthält als Array die Werte, die durchlaufen werden sollen
  $obst as $wert - setzt so oft fort, wie es Werte im Array $obst gibt
*/


// Array für die kommende Aufgabe:
$autos = array("BMW", "Audi", "Mercedes", "Opel", "VW");

?>

Aufgabe

Baue eine foreach-Schleife, die das Array $autos in einer HTML-Tabelle ausgibt. Jedes Auto soll dabei in einer eigenen Zeile stehen.

<?php
/*
  Das folgende Beispiel gibt sowohl die Schlüssel als auch die Werte des angegebenen Arrays ($person) aus:
*/

$person = array("Markus"=>"35", "Franz"=>"37", "Martina"=>"43");

foreach($person as $name => $alter) {
  echo "$name ist $alter Jahre alt<br>";
}

/*
  ERKLÄRUNG
  $person - enthält als Array die Schlüssel / Wert-Paare, die durchlaufen werden sollen
  $person as $name => $alter - setzt so oft fort, wie es Schlüssel / Wert-Paare im Array $person gibt
*/


// Array für die kommende Aufgabe
$autos = array(
           "BMW"=>"schwarz",
           "Audi"=>"rot",
           "Opel"=>"grün",
           "VW"=>"weiß",
           "Mercedes"=>"gelb",
           "Skoda"=>"grau",
              );

?>

Aufgabe

Baue eine foreach-Schleife, die Schlüssel/Wert-Paare des Arrays $autos in einzelnen <div> Containern ausgegeben werden. Die Container sollen im Grid-Layout in 3 Spalten angeordnet sein.

PHP break & continue

Die break-Anweisung

Wir haben die break-Anweisung im letzten Unterrichtsblock Nr. 4. bereits gesehen. Sie wurde verwendet, um aus einer switch-Aussage „herauszuspringen“.

Die break-Anweisung kann auch verwendet werden, um aus einer Schleife zu springen.

<?php
/*
  Dieses Beispiel springt aus der Schleife heraus, wenn x gleich 4 ist:
*/

for ($x = 0; $x < 10; $x++) {
  if ($x == 4) {
    break;
  }
  echo "Zählerstand: $x <br>";
}
?>

Die continue-Anweisung

Die continue-Anweisung unterbricht eine Iteration (in der Schleife), wenn eine bestimmte Bedingung eintritt, und fährt mit der nächsten Iteration in der Schleife fort.

<?php
/*
  Dieses Beispiel überspringt den Wert 4 :
*/

for ($x = 0; $x < 10; $x++) {
  if ($x == 4) {
    continue;
  }
  echo "Zählerstand: $x <br>";
}
?>

break und continue in einer while-Schleife

break und continue können auch in while-Schleifen verwendet werden:

<?php
/*
  Beispiel mit der break-Anweisung
*/

$x = 0;

while($x < 10) {
  if ($x == 4) {
    break;
  }
  echo "Zählerstand: $x <br>";
  $x++;
}
?>
<?php
/*
  Beispiel mit continue-Anweisung
*/

$x = 0;

while($x < 10) {
  if ($x == 4) {
    $x++;
    continue;
  }
  echo "Zählerstand: $x <br>";
  $x++;
}
?>

Übungsaufgaben

1. Aufgabe

Erstelle eine Datei test.php und führe unterschriedliche Programme aus o.g. Beispielen durch. Verwende dabei verschiedene:

  • break
  • continue

-Anweistungen aus