Schleifen in PHP: while, do-while, for und foreach

In diesem PHP Tutorial lernen wir auf einfache Weise die 4 wichtigsten Schleifen in PHP kennen: WHILE, DO-WHILE, FOR und FOREACH.Tags: | | | | | | | | | | | |
Noch nicht sicher genug im Webdesign? Lass dir in unseren Programmier-Kursen in Kirchdorf oder unserer Wichtel-Webdesign-Agentur in Pettenbach weiterhelfen!

Worum geht´s?

In diesem PHP Tutorial werden wir die 4 in PHP verbreiteten Arten von Schleifen lernen. Schleifen werden in Programmiersprachen verwendet, um Wiederholungen zu ermöglichen. Weil Schleifen auf Bedingungen und binärer Logik basieren, solltest du diese beherrschen, bevor du dich an Schleifen annäherst. Im PHP Tutorial über Verzweigungen mit IF und ELSE und binärer Logik findest du mehr dazu.

Aber schauen wir uns nun mal die 4 in PHP verbreiteten Schleifen an:

1. Die WHILE-Schleife in PHP

Die WHILE-Schleife in PHP ist sehr ähnlich aufgebaut wie ein IF ohne ELSE. Zur Erinnerung hier ein einfaches IF:

$a = 1;
if ($a < 3) {
    echo "Hipp hipp hurra!";
}

Wenn die Variable $a kleiner als 3 ist, wird 1x „Hipp hipp hurra!“ ausgegeben.

Wenn wir nun das Wort IF mit einem WHILE ersetzen, wird aus unserem IF eine WHILE-Schleife:

$a = 1;
while ($a < 3) {
    echo "Hipp hipp hurra!";
}

Statt IF (= „falls“) steht nun WHILE (= „während“) in unserem Code. Und genau das passiert auch:

Während (=“solange“) $a kleiner als 3 ist, schreibe „Hipp hipp hurra!“.

1.1 Endlos-Schleifen in PHP vermeiden

Falls du den Code ausgeführt hast, wirst du nun feststellen, dass wir vor einem kleinen Problem stehen: Die WHILE-Schleife kann nicht aufhören, ihr „Hipp hipp hurra!“ zu feiern.

Das hat den Grund, dass $a sich innerhalb der Schleife nie verändert, und dadurch die Bedingung ($a < 3) für immer wahr (=“true“) ist.

Um das zu verändern, müssen wir die Variable $a innerhalb der WHILE-Schleife verändern.

Der Klassiker würde z.B. so aussehen:

$a = 1;
while ($a < 3) {
    echo "Hipp hipp hurra!";
    $a++;
}

Dieser Code schreibt „Hipp hipp hurra!“, erhöht dann $a um 1 und macht das so lange wie die Bedingung ($a < 3) erfüllt ist.

In unserem Fall ist das 2x der Fall.

1.2 Eine WHILE-Schleife von 1 bis 10 in PHP

Wollen wir ein 10xiges, durchnummeriertes „Hipp hipp hurra!“ und vielleicht noch mit Zeilenumbrüchen dazwischen, dann könnte das so aussehen:

$a = 1;
while ($a <= 10) {
   echo "<br>".$a."Hipp hipp hurra!";
   $a++;
}

Kommen wir nun zur nächsten Schleifen-Art: DO-WHILE.

2. Die DO-WHILE-Schleife in PHP

Eine DO-WHILE-Schleife ist der WHILE-Schleife auf den ersten Blick ähnlich:

$a = 1;
do {
    echo "<br>".$a."Hipp hipp hurra!";
    $a++;
} while ($a <= 10);

Diese Schleife ist der vorherigen recht ähnlich, und führt auch zur gleichen Ausgabe.

Der Unterschied liegt im Detail: Eine DO-WHILE-Schleife wird im Gegensatz zur WHILE-Schleife immer mindestens 1x ausgeführt. Eine WHILE-Schleife kann (wenn die Bedingung nicht erfüllt ist) auch 0 Mal ausgeführt werden, eine DO-WHILE Schleife nicht.

In den meisten Programmiersprachen wird dieser Umstand z.B. für Benutzer-Eingaben benutzt. Der Benutzer soll mindestens 1x einen Wert eingeben, der z.B. zwischen 1-10 sein soll. Gibt der Benutzer einen passenden Wert ein, muss er die Eingabe nur 1x machen. Gibt er z.B. 11 ein, wird die Eingabe wiederholt – so lange, bis die Eingabe passt.

Hier der Unterschied in der Programmiersprache Java:

Scanner sc = new Scanner(System.in);
int zahl;

// WHILE-Schleife
System.out.println("Gib eine Zahl zwischen 1-10 ein!");
zahl = sc.nextInt();
while (zahl < 1 || zahl > 10) {
    System.out.println("Gib eine Zahl zwischen 1-10 ein!");
    zahl = sc.nextInt();
}
Scanner sc = new Scanner(System.in);
int zahl;
// DO-WHILE-Schleife
do {
    System.out.println("Gib eine Zahl zwischen 1-10 ein!");
    zahl = sc.nextInt();
} while(zahl < 1 || zahl > 10);

Im zweiten Code-Beispiel braucht man weniger Zeilen, um das Gleiche zu erreichen.

3. Die FOR-Schleife in PHP

Unsere dritte Schleife ist die FOR-Schleife. Sie sieht auf den ersten Blick am kompliziertesten aus – ist aber nicht weiter schwierig:

for ($a = 1; $a <= 10; $a++) {
    echo "<br>".$a.": Hipp hipp hurra!";
}

Eine FOR-Schleife besteht aus 3 Teilen:

  • Initialisierung: $a = 1
  • Bedingung: ($a <= 10)
  • Anweisung: $a++

Die Reihenfolge ist dabei folgende:

  1. Initialisierung, 1x durchgeführt
  2. Bedingung überprüfen
    1. Wenn wahr:
      1. Führe Befehle in {}-Klammern aus
      2. Führe am Ende Anweisung ($a++) aus
      3. Überprüfe erneut Bedingung
    2. Wenn falsch: Beende Schleife

Unsere obige FOR-Schleife schreibt also wie in den anderen Beispielen 10x „Hipp hipp hurra!“.

4. DIE FOREACH-Schleife in PHP

Die FOREACH-Schleife in PHP wird zum Durchlaufen von Arrays verwendet. Sie ist gewissermaßen eine Kurzform einer FOR-Schleife für Arrays:

$arr = array(1, 3, 5, 7, 10);
foreach ($arr as $item) {
    echo $item.",";
}

Jedes Array-Element wird dabei innerhalb der Klammer mit dem angegebenen Namen (hier $item) angesprochen.

Oder anders ausgedrückt: Mit jedem Durchlauf steht $item für den jeweils nächsten Eintrag im Array $arr.

5. Welche Art von Bedingungen kann ich in Schleifen verwenden?

Du kannst grundsätzlich alle Bedingungen und alle binäre Logik einsetzen, die wir schon bei den IF kennengelernt haben.

Es ist also z.B. auch so etwas möglich:

for ($a = 1; $a <= 10 && $verheiratet || $a == 12 || $b < 3; $a++) {
    echo "<br>".$a.": Hipp hipp hurra!";
}

6. Wann verwenden wir welche Art von Schleife?

Eine FOR-Schleife bietet sich immer dort an, wo du eine bestimmte, vorher bekannte Anzahl an Durchläufen vorhast, z.B. 10 Mal oder 1000 Mal.

Eine WHILE-Schleife nimmst du traditionell dort, wo du im Vorfeld nicht weißt, wie oft eine Schleife durchlaufen wird – z.B. wenn du zeilenweise aus einer Datei liest.

Die beiden Schleifen sind aber untereinander gut austauschbar – du kannst statt einer WHILE-Schleife immer eine FOR-Schleife verwenden und umgekehrt.

Die FOREACH-Schleife verwendest du dort, wo du mit Arrays arbeitest und wo sie dir einen Vorteil bringt. Das ist auch in der Arbeit mit Arrays nicht immer zwingend der Fall.

Die DO-WHILE-Schleife verwendest du dort, wo eine Schleife immer mindestens 1 Mal durchlaufen soll.

So, das wars auch schon wieder mit den Basics zu Schleifen in PHP.

Viel Freude damit! 🙂

Diskussion zum Tutorial

Du bist aus Oberösterreich? Dann nütze doch auch unsere flexiblen Programmier-Kurse in Kirchdorf - oder gib deine Website gerne in die guten Hände unserer erfahrenen Wichtel-Webdesign-Agentur.