PHP – Teil 7: Schleifen

Wenn wir in PHP einen bestimmten Codeabschnitt öfter ausführen möchten bieten sich Schleifen an. In diesem Teil der großen PHP Serie gehe ich auf die verschiedenen Schleifen ein und erkläre die Besonderheiten und Verwendung.

Was ist eine Schleife?

Eine Schleife wird benutzt, um einen Codeblock – abhängig von einer Bedingung – mehrfach auszuführen. Der Codeblock wird solange ausgeführt, solange die gegebene Bedingung true ist. Da wir selbst für die Bedingung verantwortlich sind, kann es natürlich auch sein, dass eine sogenannte Endlosschleife entsteht, wie in folgendem Beispiel:

Die Bedingung in der Klammer kann sich nicht ändern, daher wird diese Schleife solange ausgeführt, bis das PHP Script beendet wird (zum Beispiel durch einen Fehler oder durch beenden des Webservers). In den meisten Fällen gilt es, solche Endlosschleifen zu verhindern, da normal der Arbeitsspeicher, der für PHP reserviert wurde, vollläuft und irgendwann das Script mit einem Out of Memory-Error unterbrochen wird.

Welche Schleifen gibt es?

PHP bietet uns vier verschiedene Schleifen an: while, for, foreach und do while. Diese sind alle nach dem selben Prinzip aufgebaut und können meist auch alle für ein bestimmtes Problem hergenommen werden. Allerdings sind manche Schleifen einfach geeigneter und bei anderen ist es umständlicher, bestimmte Herausforderungen zu lösen.

Die while Schleife

Die while Schleife besitzt eine Bedingung und einen Codeblock. Der Codeblock wird so lange ausgeführt, wie die Bedingung true ergibt. Dabei wird die Bedingung überprüft, bevor der Codeblock das erste mal ausgeführt wird und dann nach jedem kompletten Durchgang erneut. Sobald die Bedingung einmal false ergibt, wird der Codeblock übersprungen und das Script fährt danach fort.

Soll ein Durchgang vorzeitig beendet werden und der nächste begonnen werden (nach Überprüfung der Bedingung natürlich) gibt es das Schlüsselwort continue. Um die Schleife komplett abzubrechen gibt es außerdem das Schlüsselwort break. Diese beiden Schlüsselwörter funktionieren bei allen Schleifen gleich.

 

Die for Schleife

Mit dem Schlüsselwort for wird die sogenannte Zählerschleife begonnen. Diese hat die Besonderheit, dass in der Bedingung nicht nur die Abbruchbedingung steht sondern auch noch ein Teil für die Definition von Variablen und ein Teil für die Veränderung von Variablen zur Verfügung steht. Dadurch lassen sich Dinge wie ein einfaches Hochzählen sehr einfach erreichen. Ein Beispiel:

Wie man in diesem Beispiel sieht, ist die Bedingung aufgeteilt in drei Ausdrücke, getrennt durch Strichpunkte.

Der erste Ausdruck wird einmal vor dem ersten Aufruf ausgeführt. Hier wird normalerweise eine Variable definiert, die zum Zählen verwendet wird (oft mit dem Namen $i, allerdings kann natürlich jeder Variablenname verwendet werden).

Der zweite Ausdruck ist die Bedingung, die für den Ablauf verantwortlich ist. Solange diese Bedingung true ergibt, wird der Codeblock immer wieder ausgeführt. Nach jedem Ausführen wird die Bedingung erneut geprüft.

Der dritte Ausdruck wird normal zum verändern der Zählervariable benutzt. Dieser Ausdruck wird nach jedem Schleifendurchgang einmal ausgeführt.

 

Die foreach Schleife

Die foreach Schleife wird verwendet, um ein Array oder ein Objekt (welche wir beide in späteren Teilen der Serie behandeln) zu durchlaufen. Grob zusammengefasst handelt es sich bei beidem um Datencontainer, welche mehrere Variablen enthalten. Die foreach Schleife sorgt dafür, dass diese Variablen ausgelesen werden und in jedem Durchgang eine andere der Variablen zur Verfügung steht. Wenn ich näher auf Arrays eingehe, werde ich noch weitere Beispiele zu diesem Schleifentyp bringen.

 

Die do while Schleife

Die do while Schleife ist im Endeffekt (wie man vom Namen schon ablesen kann) eine Abwandlung der while Schleife. Der einzige Unterschied zwischen den beiden besteht darin, dass hier der Codeblock ZUERST einmal ausgeführt wird und die Bedingung danach geprüft wird. Das bedeutet, wenn man garantieren möchte, dass der Codeblock mindestens einmal ausgeführt wird, bietet sich eine do while Schleife an.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*