Lerne Coding
PHP Schleifen Verwenden, so geht es!
28.03.2020

PHP Schleifen Anwenden

Inhaltsverzeichnis
[[TABLE OF CONTENTS]]
access_timeGeschätzte Lesezeit ca. Minuten

Eine PHP Schleife ist dazu da, Programmabläufe zu wiederholen. Auf Englisch spricht man oft von einem Loop. Ein Loop oder auf Deutsch auch "Schleife" genannt, ist eine Kontrollstruktur für Programme.

Es gibt verschiedene Schleifentypen in PHP, das sind die folgenden:

  • for-Schleife,
  • foreach-Schleife,
  • while-Schleife,
  • do-while-Schleifen.

Der Vorteil einer PHP Schleife ist, dass der Programmcode in der PHP Schleife mehrmals ausgeführt werden kann. Ohne sie müsste man den Code mehrmals kopieren oder mit Goto-Anweisungen arbeiten, um vom Ende wieder an den Anfang zu springen. Schleifen sind somit eine sehr elegante Möglichkeit zum Arbeiten und sind aus heutigen Programmiersprachen nicht mehr wegzudenken.

Die Schleife kann theoretisch endlos ausgeführt werden. Das wird zum Beispiel in vielen anderen Sprachen für grafische Interfaces gemacht.

Wo für kann man Schleifen verwenden?

Hauptaugenmerk liegt natürlich darauf, Programmcode zu wiederholen. Das eignet sich zum Beispiel für das Prüfen von Arrays auf bestimmte Werte. Oder um Elemente ins Array zu erweitern; je nach Inhalt des Elements. Du kannst Programmanweisungen so oft ausführen lassen, bis eine Bedingung zutrifft.

for-Schleifen in PHP

Eine for-Schleife ist in mehrere Elemente aufgeteilt. Zu aller Erst unterscheiden wir zwischen Schleifenkopf und Schleifenkörper. Im Schleifenkopf werden die Parameter für die Schleifen gesetzt wie oft diese durchlaufen soll, welche Variable der Zähler ist.

Im Einzelenden haben wir folgende Parameter im Schleifenkopf:

Als Erstes haben wir Variablendefinierung. Das ist unsere Zählervariable. Dort wird diese auf 0 gesetzt oder einen anderen Wert an diesem wird das Zählen der Schleife gestartet. Als Zweites haben wir eine Anweisung bis zu welchem Wert gezählt werden soll, solange diese Anweisung true ist, wird der Schleifenkörper ausgeführt. Zuletzt haben wir einen Parameter Zähler. Dieser erhöht sich in der Infografik um eins, allerdings können das auch deutlich komplexere Zähler werden bei Bedarf.

Der Schleifenkörper wird nur ausgeführt, wenn die Anweisung im Schleifenkopf true ist. Im Schleifenkörper können ganze Programme und Funktionen stehen, dort muss nicht nur 1 Zeile stehen. So kann man komplexe Programme erstellen.

Hier nun einmal das Ganze als Infografik um es noch einmal einfacher nachvollziehen zu können.

for-Schleife in PHP
for-Schleife in PHP

Die Ausgabe der for Schleife würde wie folgt aussehen.

0<br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>

In dem folgenden Diagramm könnt ihr sehen wie die Kontrollstruktur als Prozess abläuft, als Erstes wird die Anweisung geprüft, wenn die Anweisung true ist, wird der Schleifenkörper ausgeführt, danach wird die Schleifenvariable erhöht. Und die Anweisung wird erneut geprüft. Und der Ablauf beginnt wieder von vorne.

Kontrollstruktur Diagramm for Schleife in PHP
Kontrollstruktur Diagramm for Schleife in PHP

Die For-Schleife ist vor allem dann sinnvoll, wenn du bereits weißt, wie oft die Schleife durchlaufen soll.

foreach-Schleifen in PHP

Die foreach Schleife ist für Arrays eine der besten Schleifen. Denn die foreach-Schleife iteriert über ein jedes Element des Arrays hinüber. Die Foreach Schleife hat noch eine Besonderheit: im Vergleich zur for Schleife benötigt sie keinen Zähler. Es wird die Anzahl der Elemente im Array geloopt. Bei 10 Elementen im Array, läuft der Array 10 mal durch.

Falls du noch nicht weißt, was Arrays sind, solltest du dir spätestens jetzt einmal den folgenden Artikel anschauen, da dieses Wissen für den Inhalt von diesem Beitrag sehr nützlich ist.

Arrays in PHP verwenden

In PHP Arrays zu verwenden, ist nicht schwer. Zu wissen, wie man sie sortiert und darüber iteriert, ist allerdings sehr wichtig zu wissen.

Artikel Lesen

In der folgenden Grafik seht ihr den Aufbau einer foreach Schleife, als Erstes braucht es einen Array oder eine Variable die ein Array enthält. Danach folgt das Keyword as danach kann $key ⇒ folgen dieser Teil kann aber auch weggelassen werden. Die $key Variable darf auch jeden anderen Namen tragen. Sie enthält den aktuellen Key zum Array Value. Danach folgt der Name wie das Array Element "Value" im Schleifenkörper heißen soll.

Foreach Schleifen in PHP
Foreach Schleifen in PHP

Die Variable $value nimmt immer den aktuellen Wert des aktuellen Durchlaufs an. Heißt, wir können nicht die Variable $value für den nächsten Durchlauf manipulieren.

Ein Beispiel einer foreach Schleife kann sein eine Ausgabe der deutschen Automarken nacheinander. Das "\n" steht für new line. Diese ist nützlich, wenn du es im Quellcode sauber untereinander dargestellt haben willst.

$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];

foreach($automarken as $key => $automarke){
    echo $key. " " . $automarke . "\n";
}

Der Key ist in dem Fall von 0 bis 5 in der Darstellung.

Durch den Key den Ursprungs Array Manipulieren

Da wir einen Key haben für jedes Element, können wir den ursprünglichen Array auch durch eine foreach Schleife verändern, in unserem Beispiel wollen wir allen Elementen direkt eine New Line Char dran hängen, um bei der nächsten Ausgabe diesen nicht mehr extra schreiben zu müssen.

Der Code dafür sieht wie folgt aus:

$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];

foreach($automarken as $key => $automarke){
    $automarken[$key] = $automarke . "\n";
}

foreach($automarken as $automarke){
    echo $automarke;
}

In der ersten foreach Schleife Manipulieren wir das Array an den Stellen vom Key. Und ergänzen den New Line Char.

while-Schleifen in PHP

Der Unterschied von for-Schleifen und while-Schleifen liegt darin, dass while-Schleifen sich für deutlich komplexere Anweisungen besser eignen, und dass Schleifen nicht nur über Zähler, sondern auch über bestimmte Zustände laufen können.

In unserem Beispiel stellen wir uns einen visuellen Würfel mit 4 Farben vor Rot, Blau, Grün, Gelb.

Dafür erstellen wir eine Funktion "Würfel". Diese gibt uns eine der 4 verschiedenen Farben zufällig aus.

function Wuerfel(){
    return ["Rot","Blau","Grün","Gelb"][rand(0,3)];
}

Jetzt wollen wir, dass unser Programm aufhört zu Würfeln, wenn die Farbe Rot ist. Dann soll die Zahl ausgegeben werden wie oft gewürfelt werden musste. Diese würde in einer for Schleife nicht gehen, weil wir vorher nicht wissen wie oft gewürfelt werden muss, da das Ergebnis komplett zufällig ist.

$wurf = "";
$count = 0;

while($wurf != "Rot"){
    $count++;
    $wurf = Wuerfel();
}

echo "Es wurde " . $count . " mal Gewürfelt!";

Die Zahl $count gibt an wie oft Gewürfelt wurde, in meinem Beispiel Wurf waren es zum Beispiel 8 mal bis Rot gekommen ist. Dieses Verhalten ließe sich mit einer for Schleife nicht umsetzen, da diese einen Anfang und ein Ende braucht.

Es wurde 2 mal Gewürfelt!
Es wurde 6 mal Gewürfelt!
Es wurde 8 mal Gewürfelt!
Es wurde 2 mal Gewürfelt!

Verschiedene Versuche ergeben verschiedene Ergebnisse. So ist dieses Verhalten nicht mit einer for Schleife abzudecken.

Vorsicht vor Endlosschleifen

Die Endlosschleife ist eine gefährliche Schleife und zieht in PHP einen Timeout nach sich. Der Browser wird sich aufhängen in der Regel. Das geschieht, wenn die Bedingung im Schleifenkopf niemals zutrifft, das kann nicht nur bei While-Schleifen der Fall sein, das geht mit allen Schleifen. Außer mit der foreach da diese ja durch die Größe des Arrays definiert ist.

Dieser Fall würde bei unserer oberen While-Schleife zum Beispiel eintreten, wenn wir kein Rot hätten was Gewürfelt werden kann, dann würde die Bedingung $wurf ≠ Rot niemals nicht zutreffen.

do-while-Schleifen in PHP

Unser oberes Beispiel bei der while-Schleife eignet sich außerdem ausgezeichnet für eine andere Schleife, und zwar die do-while-Schleife.

Die do-while-Schleife ist eine fußgesteuerte Schleife und nicht wie bei den meisten Schleifen kopfgesteuert, der Vorteil hiervon ist, dass der Schleifenkörper immer einmal ausgeführt wird, in unserem Beispiel von oben macht es Sinn, diese Schleife der while-Schleife vorzuziehen aus dem Grund, das wir uns die Zuweisung eines leeren String ersparen können.

function Wuerfel(){
    return ["Rot","Blau","Grün","Gelb"][rand(0,3)];
}

$count = 0;

do {
    $wurf = Wuerfel();
    $count++;
} while ($wurf != "Rot");

echo "Es wurde " . $count . " mal Gewürfelt!";

So wird immer zuerst einmal der Schleifenkörper ausgeführt und dann wird die Anweisung überprüft.

Das Diagramm für eine fußgesteuerte Schleife sieht wie folgt aus, dort kann man gut erkennen, dass der Schleifenkörper immer ausgeführt wird.

Do While Schleife
Do While Schleife

continue - break Keyword in Schleifen

Du kannst alle Schleifen beeinflussen mit zwei Keywords continue und break.

Mit continue können wir den restlichen Schleifenkörper überspringen und es wird mit dem nächsten Zähler fortgefahren.

Für unser Beispiel kann ein Continue Statement zum Beispiel wie folgt aussehen.

$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];

foreach($automarken as $key => $automarke){
    if($automarke == "Opel"){
        continue; 
    }   

    echo $key. " " . $automarke . "\n";
}

In diesem Beispiel würden jetzt Audi, BMW, Mercedes-Benz, Porsche und VW ausgegeben werden, der Opel würde übersprungen werden.

Mit break können wir eine Schleife komplett beenden, das ist nützlich, wenn wir zum Beispiel in einer foreach Schleife etwas suchen können, so können wir auch in einer foreach Schleife eine Abbruchbedingung integrieren.

Für unser Beispiel der Automarken kann das zum Beispiel wie folgt aussehen:

$automarken = ["Audi","BMW","Mercedes-Benz","Opel","Porsche","VW"];

foreach($automarken as $key => $automarke){
    if($automarke == "Opel"){
        break; 
    }   

    echo $key. " " . $automarke . "\n";
}

In diesem Beispiel würden nur Audi, BMW und Mercedes-Benz ausgegeben werden.

Diese Keywords kannst du nicht nur bei der foreach Schleife verwenden, du kannst sie bei jeder Schleife verwenden, deiner Kreativität sind keine Grenzen gesetzt.

Alternative Syntax für Schleifen in PHP

Als letzten Abschnitt will ich euch noch etwas vorstellen, und zwar gibt es die Möglichkeit, eine alternative Syntax zu verwenden für die verschiedenen Schleifen von der while bis zur for-Schleife in PHP.

Diese Syntax verzichtet auf {} und setzt stattdessen auf den Punkt, das sieht für die verschiedenen Schleifen wie folgt aus. Die Beispiele sind selbsterklärend, nachdem du nun diese Anleitung gelesen hast:

Die For-Schleife

for ($i=0; $i <= 10; $i++):
    echo $i . "<br>";
endfor;

Die for Schleife beginnt mit einem : und endet mit endfor;

Die ForEach-Schleife

foreach($automarken as $key => $automarke):
    echo $key. " " . $automarke . "\n";
endforeach;

Die foreach Schleife beginnt mit einem : und endet mit endforeach;

Die While-Schleife

while($wurf != "Rot"):
    $count++;
    $wurf = Wuerfel();
endwhile;

Die while Schleife beginnt mit einem : und endet mit endwhile;

Ich persönlich bevorzuge immer öfters diese alternative Syntax, da ich auch viel mit Python arbeite und da eben alles ohne Klammern eh viel schöner aussieht. Einen direkten Vorteil hat diese alternative Syntax nicht.

Fazit

PHP Schleifen ermöglichen euch, Programmabschnitte unbestimmt oder bestimmt oft zu wiederholen ohne Goto-Anweisungen verwenden zu müssen. Schleifen sind aus Programmiersprachen nicht mehr wegzudenken. Also viel Spaß beim Verwenden!

Kommentare zum Artikel

Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "PHP Schleifen Verwenden, so geht es!"!

Kommentar schreiben

Vom Autor Empfohlen
close