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

    Logo der Programmiersprache PHP
    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 12.05.2020
    zuletzt aktualisiert am: 06.02.2023

    Schleifen in PHP: while, for und vieles mehr!

    Fast jede moderne Programmiersprache verfügt über Schleifen, um ähnliche Operationen für eine Liste von Elementen auszuführen, so auch PHP. Daher möchte ich dir im folgenden Beitrag die verschiedenen Arten von Schleifen vorstellen.

    Die PHP for Schleife

    Die for-Schleife ist besonders nützlich, wenn du zuvor schon weißt, wie oft der Code-Block darin ausgeführt werden soll.
    Diese Schleife nimmt folgende 3 Ausdrücke als Parameter:
    Zuerst wird ein Zähler initialisiert.
    Als zweites wird überprüft, ob dieser Zähler einem bestimmten Kriterium entspricht und zuletzt wird festgelegt, um wie viel der Wert des Zählers nach jedem Schleifendurchlauf verändert werden soll.
    Die einfachste Form einer solchen Schleife sieht so aus:

    for ($i = 0; $i < 3; $i++) {
        echo "i: {$i} <br>";
    }
    i: 0
    i: 1
    i: 2

    Natürlich sind auch noch andere Ausdrücke möglich.
    So kann zum Beispiel auch gefragt werden, ob $i größer oder gleich einem gewissen Wert ist.
    Auch der Initialisierungswert sowie der Ausdruck, mit dem $i erhöht wird, kann ein anderer sein.

    for ($i = 1; $i <= 10; $i = $i * 2) {
        echo "i: {$i} <br>";
    }
    i: 1
    i: 2
    i: 4
    i: 8

    For-Schleifendurchlauf mit continue stoppen

    Mit dem Schlüsselwort continue kannst du dafür sorgen, dass alle folgenden Anweisungen gestoppt werden. Die Schleife wird danach für den nächsten Wert weiter ausgeführt.

    for ($i = 1; $i <= 10; $i = $i * 2) {
        if ($i == 4) {
            continue;
        }
        echo "i: {$i} <br>";
    }
    i: 1
    i: 2
    i: 8

    For-Schleife mit break abbrechen

    Das Schlüsselwort break hingegen bricht die Ausführung der Schleife vollständig ab.

    for ($i = 1; $i <= 10; $i = $i * 2) {
        if ($i == 4) {
            break;
        }
        echo "i: {$i} <br>";
    }
    i: 1
    i: 2

    Die PHP foreach Schleife

    Die foreach-Schleife kann hingegen nur auf Arrays angewendet werden, wobei jedes Element des Arrays einzeln zurückgegeben wird und verarbeitet werden kann.

    $array = [1, 2, 3];
    foreach ($array as $wert) {
        echo "{$wert} <br>";
    }
    1
    2
    3

    Es ist auch möglich, Arrays mit Schlüssel-Wert-Paaren zu erstellen und den Schlüssel sowie den Wert einzeln zu verarbeiten.

    $array = [1=>"eins", 2=>"zwei", 3=>"drei"];
    foreach ($array as $schluessel => $wert) {
        echo "{$schluessel}: {$wert} <br>";
    }
    1: eins
    2: zwei
    3: drei

    foreach Schleifenablauf mit break und continue manipulieren

    Du kannst break und continue mit foreach genauso anwenden, wie mit for.

    foreach ($array as $schluessel => $wert) {
        if ($wert == "zwei") {
            continue;
        }
        echo "{$schluessel}: {$wert} <br>";
    }
    1: eins
    3: drei

    Die PHP while Schleife

    Mit while kannst du eine Schleife definieren, die Anweisungen durchführt, solange die angegebene Bedingung true ist.

    $i = 1;
    while($i <= 10) {
        $i *= 2;
        echo "$i".'<br>';
    }
    2
    4
    8
    16

    Im vorigen Beispiel wurden 2, 4, 8 und 16 ausgegeben, da $i jedes Mal verdoppelt wurde, bevor die Variable mit echo ausgegeben wurde.

    while Schleifenablauf mit break und continue manipulieren

    Auch mit while kannst du break und continue wie gewohnt verwenden.

    while($i <= 300) {
        $i *= 2;
        if ($i <= 100) {
            continue;
        }
        echo "$i".'<br>';
    }
    128
    256
    512

    Mit list und each die while-Schleife wie eine foreach-Schleife nutzen

    Mit list und each könntest du while auch wie eine foreach-Schleife verwenden.

    $array = ['foo'=>'bar', 1=>2];
    while(list($key, $value) = each($array)) {
        echo $key.': '.$value.'<br>';
    }
    foo: bar
    1: 2

    Die PHP do-while Schleife

    Du kannst die Konstruktion do-while genauso verwenden, wie while.
    Der entscheidende Unterschied ist, dass die definierten Anweisungen ausgeführt werden, bevor die Bedingung überprüft wird.

    $i = 0;
    do {
        echo "i: $i".'<br>';
    } while($i != 0);
    i: 0

    break und continue mit verschachtelten Schleifen

    Du kannst break und continue auch in verschachtelten Schleifen verwenden.

    for ($i = 1; $i < 3; $i++) {
        $x = $i * $i;
        echo "<br>i: $i<br>";
        while ($x < 9) {
            $x += 2;
            if ($x == 5) {
                continue;
            }
            echo "$x, ";
        }
    }
    i: 1
    3, 7, 9,
    i: 2
    6, 8, 10,

    Im vorigen Beispiel wurde nur die Ausgabe von $x unterdrückt, wenn $x 5 entspricht. Wenn du hinter continue die Anzahl an Schleifen angibst, für die es angewendet werden soll, kannst du die äußeren Schleifen auch beeinflussen.
    Wenn continue von einer 2 gefolgt wäre, dann würde auch die for-Schleife übersprungen werden.

    for (...) {
        while (...) {
            if (...) {
                continue 2;
            }
        }
    }
    i: 1
    3,
    i: 2
    6, 8, 10,

    Mit break 2 statt continue 2 wäre das Ergebnis entsprechend das Folgende:

    i: 1
    3,

    Fazit – Schleifen in PHP

    In PHP gibt es verschiedene Arten von Schleifen.
    for, foreach, while und do-while haben wir gerade kennengelernt.
    Diese zu verwenden ist recht einfach, wenn man nur weiß, wann welche von Nutzen ist. Mit continue und break kannst du zusätzlich die Logik deiner Schleifen genauer abstimmen. Auf die beiden Schlüsselwörter können auch Zahlen folgen, die angeben, wie viele Schleifen betroffen sein sollen.

    Wenn du noch Fragen, Anregungen, Lob und/oder Kritik hast, schreib mir doch bitte einen Kommentar!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig