Kontrollstrukturen sind einer der wichtigsten Teile einer Programmiersprache. Sie lassen ein Skript erst richtig dynamisch werden. Wir zeigen die wichtigsten Kontrollen in PHP.
Vorwort
Mittels Kontrollstrukturen wird die Abarbeitung eines Skriptes kontrolliert, d.h. Befehle werden nur dann abgearbeitet, wenn entsprechende Bedingungen erfüllt sind.
Vorprüfende Schleife
Neben der in der PHP-Einführung erwähnten for-Schleife gibt es noch die while-Schleife. Die Bedingung wird hier ebenfalls vor Ablauf überprüft. Geben wir zum Beispiel die Zahlen von 1 bis 10 aus:
$i = 1;
while ( $i <= 10 ) {
print ("$i<br>“);
$i++;
}
Anders als bei der for-Schleife besteht diese nur aus einem Ausdruck, der Abbruchbedingung. Die Variable, die die Schleifendurchläufe zählt, wird hier innerhalb der geschweiften Klammern erhöht bzw. erniedrigt.
Nachprüfende Schleife
Bei der do-while-Schleife wird die Bedingung erst nach dem Durchlaufen überprüft. Dadruch wird diese Schleife immer mindestens einmal durchlaufen.
$i = 11;
do {
print (“$i<br>”);
$i++;
} while ( $i <= 10 );
Obwohl die Bedingung nicht erfüllt ist, wird diese Schleife einmal abgearbeitet und die Zahl 11 ausgegeben. Erst danach wird festgestellt, dass die Bedingung nicht erfüllt ist und die Schleife wird beendet.
Vorzeitiges Beenden einer Schleife
Um einen Schleifendurchlauf zu überspringen, gibt es den Befehl continue;. Die Verwendung macht allerdings nur in Verbindung mit einer if-Abfrage Sinn.
$i = 1;
while ( $i <= 10 ) {
if ($i == 7) {
continue;
}
print ("$i");
$i++;
}
Dieses Beispiel gibt wieder die Zahlen von 1 bis 10 aus, allerdings ohne die 7.
Mittels break; können Sie die gesamte Schleife beenden.
$i = 1;
while ( $i <= 10 ) {
if ($i == 7) {
break;
}
print ("$i");
$i++;
}
Hier werden nur die Zahlen von 1 bis 6 ausgegeben. Bei der Zahl 7 wird die gesamte Schleife beendet.
Fallunterscheidung
Die Funktion switch() arbeitet ähnlich wie mehrere if-Anweisungen, die die gleiche Variable betreffen. Sie bringt aber mehr Übersicht und spart Code ein.
Es lassen sich also abhängig vom Inhalt einer Variable verschiedene Befehle ausführen.
$a = -1;
switch ($a) {
case “1″:
print (“Der Wert ist 1.”);
break;
case “2″:
case “3″:
case “4″:
print (“Der Wert ist 2, 3 oder 4.”);
break;
default:
print (“Ungültiger Wert.”);
break;
}
Abhängig vom Inhalt der Variable $a wird ein bestimmter Code-Abschnitt ausgeführt. Die Vergleichswerte werden hinter den case-Anweisungen und mit einem nachfolgenden Doppelpunkt notiert (im Beispiel: case “1″:). Sie können innerhalb der switch-Anweisung beliebig viele case-Anweisungen definieren. Für jede case-Anweisung ist immer nur ein Vergleichswert erlaubt.
Beim Abarbeiten der Funktion wird von oben nach unten der Variableninhalt mit dem Vergleichswert verglichen. Stimmen beide überein, werden die nachfolgende Befehle ausgeführt. Mittels break; verlassen wir dann die switch-Anweisung. Ohne diesen Zusatz würden nachfolgende case-Werte, obwohl sie nicht übereinstimmen, trotzdem ausgeführt werden.
Mit der default-Anweisung wird bei Bedarf ein Code-Abschnit definiert, der ausgeführt wird, wenn keiner der Vergleiche in den case-Anweisungen zutrifft.
Beenden des gesamten Skripts
Wollen Sie einmal das gesamte Skript abbrechen, verwenden Sie exit; oder die;. Beide Befehle haben die gleiche Wirkung. Sinn macht dies zum Beispiel bei einer Fehlerüberprüfung:
if ($name == “”) { // Variable $name ist leer
print (“Fehler: Bitte geben Sie Ihren Namen ein.”);
die;
}
Links zum Thema:
Online-Befehlsreferenz
Diese Artikel könnte Sie interessieren:
PHP-Einführung
Lokalen Webserver einrichten
(AM | 22.06.02)



Ich empfehle anstelle des letzten Codebeispieles, welches wie folgt aussieht
if ($name == “”) { // Variable $name ist leer
print (“Fehler: Bitte geben Sie Ihren Namen ein.”);
die;
}
folgenden Code:
if ($name == “”) {
die(“Fehler: Bitte geben Sie Ihren Namen ein.”);
}
Letzte Änderung von Philipp Gérard am 21.04.03, 00:16.
Entschuldigt, das ich hier ein bisschen abschweife. ;-)
Aber warum ist das in Scrip geschriebene (im Artikel) immer so klein das man es kaum lesen kann ??
gruss, :-|
mike
@Philipp:
Und welchen Unterschied / Vorteil siehst du in deinem Scriptvorschlag? Von der Funktionalität her sind beide gleich …
Jonas
Jonas, wofür ein print, wenn die() sowieso eine Fehlermeldung ausgeben kann? Das Ergebnis ist dasselbe, der Weg ist leicht anders.
Ich denke einfach, dass unnötiger Code vermieden werden sollte.
Faktisch willst du durch dein Script also eine Zeile einsparen – ist in Ordnung, aber der vorgestellte Code ist von der Wirkung her nicht anders.
cu
Jonas
<<Aber warum ist das in Scrip geschriebene (im Artikel) immer so klein das man es kaum lesen kann ??>>
Das liegt irgendwie am Browser. Im IE ist’s ok … (L) ;D
So… jetzt passts auch im Mozilla! :-)
Letzte Änderung von Andreas Mauf am 21.04.03, 16:10.