PHP Schnellstart – Wiederholungen (Schleifen)

Häufig ist in einem PHP-Skript etwas mehrfach auszuführen -- sei es das Lesen aller Datensätze aus einer Datenbank, das Zählen von Elementen oder das Zusammenrechnen von Werten.

Natürlich geht das mit einzelnen Anweisungen, die Du so oft hintereinander angibst, wie es notwendig ist. Das ist jedoch umständlich, weil der Programmcode dann sehr lang werden kann. Ist die Anzahl der Wiederholungen jedoch nicht von vornherein klar, wird es zudem schwierig, das sauber zu programmieren.

Die Lösung dafür heißt Schleifen (Synonym: Wiederholungen).

Die allgemeine Idee hinter einer Schleife ist es, einen Satz von Anweisungen zu wiederholen. Die Wiederholung erfolgt dann so oft, wie die angegebene Bedingung der Schleife erfüllt ist.

PHP kommt mit drei Arten von Schleifen daher --

  1. einer for-Schleife,
  2. einer foreach-Schleife und
  3. einer while-Schleife.

Spezielle Anweisungen wie break und continue helfen Dir dabei, Schleifen bei Bedarf vorzeitig zu verlassen und Schleifendurchläufe zu überspringen. Wir werden Dir diese Möglichkeiten im Folgenden ausführlich erläutern.

Die for-Schleife

Verwende eine for-Schleife, wenn eine genaue Anzahl von Durchläufen bekannt ist. Der Schreibstil ist ähnlich dem von C/C++ und erfordert drei Werte -- den Anfangswert oder die untere Grenze des Zählers (hier: $counter = 10), den Maximalwert oder die obere Grenze des Zählers, der als Bedingung formuliert ist (hier: $counter < 15), und den Ausdruck für die Schritte -- wie der Zähler erhöht oder verringert wird (hier: $counter++ für eine Erhöhung um 1 nach jedem Schleifendurchlauf). Im ersten Durchlauf hat $counter den Wert 10, im zweiten 11, und im letzten Durchlauf den Wert 14.

<?php 
   for($counter = 10; $counter < 15; $counter++) {
      echo $counter;
   }
?>
Code ausprobieren ×

Das Ergebnis sind fünf Durchgänge, in dem jeweils der entsprechende Wert aus dem Bereich von 10 bis 14 ausgegeben wird.

Die foreach-Schleife

Die foreach-Schleife verwendest Du, um alle Elemente einer Sequenz wie eine Zeichenfolge, ein Array oder ein anderes iterierbares Objekt zu durchlaufen, bis auch das letzte Element in der Sequenz erreicht ist. Die folgende Auflistung zeigt, wie Du alle Elemente eines Arrays von Postleitzahlen ausgeben kannst. Es wird automatisch ermittelt, wieviele Elemente sich in dem Array befinden -- Du musst nicht extra vorher selbst zählen.

<?php 
   $plz = [ 10247, 26113, 34167, 96112 ];

   foreach ($plz as $wert) {
      echo $wert . "<br>";
   }
?>
Code ausprobieren ×

Das Ergebnis sind vier Durchläufe, in dem der jeweilige Wert aus dem Array $plz ausgegeben wird -- zuerst 10247, dann 26113, dann 34167 und am Schluss 96112.

Die while-Schleife

PHP bietet zwei Arten von while-Schleifen an -- eine while-do-Schleife und eine do-while-Schleife. Beide Konstrukte unterscheiden sich darin, wie oft die Anweisungen im Hauptteil der Schleife ausgeführt werden und zu welcher Zeit die Bedingung für das Beenden der Schleife überprüft wird.

Bei einer while-do-Schleife wird zuerst die Bedingung getestet, und sofern diese erfüllt ist, werden die Anweisungen innerhalb der Schleife ausgeführt. Sie werden ausgeführt, solange der Ausdruck im Kopf der Schleife TRUE ist. Diese Schleife ist übersetzbar mit "solange die
Bedingung wahr ist, mache etwas".

<?php 
   $maximum = 10;
   $aktuell = 1;

   while ($aktuell <= $maximum) {
      echo "Das Quadrat von $aktuell ist ", $aktuell * $aktuell;
      $aktuell++;
   }
?>
Code ausprobieren ×

Die Ausgabe beinhaltet die Quadrate der Werte von 1 bis 10 -- zuerst 1, dann 2, dann 9, usw. Die Schleife wird so lange durchlaufen, bis der aktuelle Wert in $aktuell größer als das Maximum ist.

Im Gegensatz dazu werden bei einer do-while-Schleife zuerst die Anweisungen in der Schleife ausgeführt, und danach wird die angegebene Bedingung getestet. Wenn diese Bedingung erfüllt ist, werden die Anweisungen erneut ausgeführt, und wenn nicht, wird die Schleife beendet. Dieses Konstrukt kannst Du übersetzen mit "mache etwas, während die Bedingung wahr ist". Die folgende Auflistung zeigt die gleiche Berechnung wie oben, aber als do-while-Schleife.

<?php 
  $maximum = 10;
  $aktuell = 1;
  
  do {
      echo "Das Quadrat von $aktuell ist ", $aktuell * $aktuell;
      $aktuell++;
  } while ($aktuell <= $maximum);
?>
Code ausprobieren ×

Eine Schleife mittels break verlassen

Du kannst die break-Anweisung verwenden, um eine Schleife vorzeitig abzubrechen. Die folgenden Zeilen demonstrieren dies für eine while-do-Schleife, die von 5 bis 1 zählt. Die Schleife wird vorzeitig mit Hilfe von break gestoppt, wenn der Wert von $counter den Wert 2 erreicht.

<?php 
   $counter = 5;
   while ($counter > 1) {
      echo $counter;
      if ($counter == 2) {
         break;
      }
     $counter--;
   }
?>
Code ausprobieren ×

Elemente mittels continue überspringen

Die continue-Anweisung verwendest Du, um die restlichen Anweisungen in der aktuellen Ausführung der Schleife zu überspringen und mit dem nächsten Schleifendurchlauf fortzufahren. Die folgende Auflistung zeigt dies für eine foreach-Schleife, in der die Anzahl der Postleitzahlen gezählt wird, die unter dem Wert 30000 liegen.

<?php 
   $plz = [ 10247, 26113, 34167, 96112 ];
   $counter = 0;

   foreach ($plz as $wert) {
      if ($wert < 30000) {
         echo $wert . "<br>";
         $counter++;
      } else {
         continue;
      }
   }
   echo "Die Liste beinhaltet $counter Postleitzahlen, die kleiner als 30000 sind.";
?>
Code ausprobieren ×

Deine Aufgabe - Jetzt bist du gefragt:

Im untenstehenden Editor findest Du eine Übung zu Schleifen. Deine Aufgabe ist es eine for-Schleife zu erstellen, die 8-mal den Text "Ich lerne PHP<br>" ausgibt und dann stoppt.

Tipp: Es ist vollkommen in Ordnung, wenn du die Syntax der for-Schleife noch nicht auswendig kennst. Schaue dafür einfach in das obige Beisipel zu for-Schleifen.

Code-Editor:

[lp_spoiler title="Lösung anzeigen" class="da"]

<?php
    for($counter = 0; $counter < 8; $counter++) {
       echo "Ich lerne PHP<br>";
    } 
?>
Code ausprobieren ×

[/lp_spoiler]

Zusammenfassung zu Schleifen

Das waren die wichtigsten Grundlagen zu Schleifen in PHP. Sie sind essentiell, um Anweisungen wiederholt abzuarbeiten. Mit den verschiedenen Schleifentypen gelingt das für jeden Einsatzfall effektiv. Somit brauchst du deinen Code nicht mit unnötigen Befehlen aufblähen und sparst dir Zeit beim Coden von oft zu wiederholenden Aufgaben.