I love PHP – 3. Alternative und Schleifen
- Kateogrie: PHP
- 28.12.2010
- Kommentare: 0
Einige Zeit ist seit dem letzten “I love PHP”-Artikel vergangen. Aus diesem Grund starten wir jetzt nochmal richtig durch und beschäftigen uns mit dem letzten Basic-Thema: Alternative und Schleifen. Diese sind deshalb wichtig, weil sie uns den komfortablen Umgang mit Variablen ermöglichen.
Die IF-Alternative
Möchte man z.B. den Inhalt einer Variable vergleichen, verwendet man eine Alternative – das sogenannte IF.
IF(bedingung) { anweisungen... }
Eine IF-Alternative verbal ausgedrückt bedeutet: “Wenn Bedingung erfüllt ist, dann führe die Anweisungen aus”. In den Bedingungen kann man z.B. überprüfen ob eine Variable einen bestimmten Inhalt hat oder zwei Zahlen miteinander vergleichen. Die Anweisungen werden also nur ausgeführt, wenn die Bedingung erfüllt ist, d.h. wenn darin ein true steht. Die folgende IF-Alternative würde in jedem Fall ausgeführt werden:
IF(true) { ... }
Um jetzt sinnvolle Bedingungen zu formulieren, benötigt man entweder Funktionen, die Variablen überprüfen und Wahrheitswerte (true oder false) zurückgeben oder Bedingungsoperatoren. Eine Funktion wäre z.B. empty($variable);, welches prüft ob eine Variable leer ist. Bedingungsoperatoren gibt es Folgende:
if($zahl == 1) {...} //Wenn $zahl gleich 1 ist if($zahl < 1) {...} //Wenn $zahl kleiner 1 ist if($zahl <= 1) {...} //Wenn $zahl kleiner-gleich 1 ist if($zahl != 1) {...} //Wenn $zahl ungleich 1 ist
Wenn man nun nicht nur eine Bedingung überprüfen möchte, sondern gleich mehrere, dann gibt es die Möglichkeit der Verknüpfung. Muss eine Variable einen bestimmten Wert haben und eine andere größer sein als drei, würde die Bedingung wie folgt aussehen:
IF($variable1 == 'ein bestimmter Wert' && $variable2 > 3) {...}
Mehrere Bedingungen kann man über “&&” (man kann auch “AND” schreiben) oder über “||” (man kann auch “OR” schreiben) miteinander verknüpfen. Vereinfacht kann man sagen, dass bei “AND” beide Bedingungen erfüllt seien müssen und bei “OR” wenigstens eine Bedingung.
Kluge Köpfe wundern sich nun, warum ich die ganze Zeit von Alternative rede. Damit IF auch eine richtige Alternative ist, fehlt noch der Ausweichzweig. Dieser heißt ELSE. Der Syntax sieht dann wie folgt aus:
IF(bedingung) { Anweisung, wenn Bedingung erfüllt ist... } ELSE { Anweisung, wenn Bedingung nicht erfüllt ist... }
Das ELSE funktioniert natürlich nur in Verbindung mit dem IF. Möchte man aber eine Bedingung auf Nicht-Erfülllbarkeit überprüfen, gibt es noch einen anderen Weg: Jede Bedingung kann durch das kleine Zeichen ! negiert werden. Möchte man z.B. überprüfen, ob eine Variable keinen bestimmten Wert besitzt, funktioniert dies gleich über zwei Wege:
IF( ! $variable == "Wert") {...} IF($variable != "Wert") {...}
Schleifen
Schleifen sind eines der wichtigsten Elemente einer Programmiersprache und machen die Arbeit mit Variablen erst so richtig praktikabel. Die meisten Funktionalitäten erreicht man zwar auch ohne Schleifen, aber erst durch deren Einsatz spart man unnötigen Quellcode und macht seine Anwendung effektiv. Oft hat man nämlich ähnliche Aufgaben, die sich nur durch kleine Eigenheiten unterscheiden. Man möchte beispielsweise eine Tabelle in HTML generieren.
Schleifen erfüllen diesen Zweck und sind nichts anderes als Anweisung die so oft wiederholt werden bis eine bestimmte Bedingung erfüllt ist. Es gibt natürlich auch Schleifen ohne Bedingungen. Diese laufen dann unendlich. Also nicht unbedingt erstrebenswert. Wir schauen uns diesmal die drei wichtigsten Schleifen-Typen in PHP an: While, For, Foreach.
Die While-Schleife ist eine kopfgesteuerte und allgemein Schleife, d.h. die Bedingung wird immer vor der Ausführung der Anweisungen geprüft (ähnlich dem IF).
$zahl = 0; while($zahl< 10) { echo($zahl); $zahl++; }
Diese Schleife läuft genau neun mal durch. Bei jedem Durchlauf wird geprüft ob die Variable $zahl kleiner als 10 ist. Ist dies nicht der Fall wird der aktuelle Wert der Zahl ausgegeben und danach um eins erhöht. Dann beginnt das Spielchen von neuem. Diese Schleife ist z.B. dann praktisch, wenn man sich eine Tabelle mit einer bestimmten Anzahl von Zeilen generieren möchte. Aber nicht vergessen: wird die Bedingung nie erfüllt, läuft die Schleife unendlich und der Webserver hört nicht mehr auf zu rechnen. While-Schleifen bieten sich immer dann an, wenn man nicht unbedingt mit Zählvariablen (in diesem Fall $zahl) umgehen muss, da man diese im Vorraus definieren muss.
Für dieses Problem ist es wesentlich effektiver eine For-Schleife zu verwenden, denn dabei wird automatisch eine Zählvariable initialisiert und hochgezählt (es gibt natürlich noch mehr Möglichkeiten – runterzählen z.B. *g*). Man spart also im Vergleich zur While-Schleife gleich zwei Zeilen Quellcode:
for($zahl = 1; $zahl < 10; $zahl++) { echo($zahl); }
Die dritte Variante ist eine spezielle Schleife. Die Foreach-Schleife ist für Arrays zugeschnitten und ermöglicht das komfortable durchlaufen eines Arrays mit automatischer Speicherung des Wertes des aktuellen Array-Elementes. Möchte man sich z.B. den gesamten Inhalt eines Arrays ausgeben, bietet es sich an diese Schleife zu verwenden:
foreach($meinArray AS $meinWert) { echo($meinWert); }
Hierbei wird bei jedem Schleifendruchlauf der Wert des aktuellen Array-Elementes in die Variable $meinWert geschrieben. Möchte man sich z.B. noch zustätzlich die Schlüssel / Indizies ausgeben, muss man in die foreach-Schleife wie folgt ausführen:
foreach($meinArray AS $index => $wert) {...}
Das war ein ziemlich harter Crashkurs in Sachen Alternativen und Schleifen. Es gibt noch zahlreiche weitere Elemente, wie z.B. der Mehrfachalternative Switch oder der fußgesteuerten Schleife, auf die ich aber erst eingehen möchte, wenn man diese wirklich braucht. Wen das jetzt etwas zu viel war, der braucht sich keine Sorgen machen, denn das Verständnis kommt spätestens bei konkreten Anwendungen. Auf diese stürzen wir uns dann im nächsten Artikel.
