PHP-Tutorial: Bedingungen stellen

If


Damit kommen wir zum kleinen Wörtchen if (engl. wenn). Es nimmt in vielen Programmiersprachen eine zentrale Stellung ein, mit ihm lässt sich auf die Ausdrücke der letzten Kapitel reagieren. Eine if-Anweisung prüft ob eine Bedingung wahr ist und führt gegebenenfalls speziellen Code aus. Die Syntax eines if-Blocks sieht wie folgt aus:

1
2
3
4
if (BEDINGUNG)
{
/* dann mach was */
}

Ist die Bedingung BEDINGUNG in den Klammern nach dem Schlüsselwort if wahr, wird der Code innerhalb des Bolcks zwischen den geschweiften Klammern ausgeführt, ansonsten nicht!
Möchte man nun auf den Fall, dass die Bedingung nicht wahr sei mit einer anderen Anweisung reagieren, könnte man hinter dem if-Block einen weiteren if-Block schalten, der überprüft ob !BEDINGUNG wahr ist. Es geht aber auch kürzer, und zwar mit else (engl. andernfalls):

1
2
3
4
5
6
7
8
if (BEDINGUNG)
{
/* dann mach was */
}
else // entspricht: if (!BEDINGUNG)
{
// mach was anderes
}

Ist also BEDINGUNG wahr, dann wird der if-Block, ist sie falsch, der else-Block ausgeführt. Es gibt nun auch die Möglichkeit mehrere Bedingungen abzufragen, indem man vor dem else-Fall noch einmal eine Bedingung mit elseif einbaut:

1
2
3
4
5
6
7
8
9
10
11
12
if (BEDINGUNG1)
{
ANWEISUNGEN1;
}
elseif (BEDINGUNG2)
{
ANWEISUNGEN2;
}
else
{
ANWEISUNGEN3;
}

Ist nun BEDINGUNG1 wahr, werde die ANWEISUNGEN1 ausgeführt, ansonsten wird überprüft ob BEDINGUNG2 wahr ist, wenn ja werden ANWEISUNGEN2 abgearbeitet. Sind beide Bedingungen falsch werden ANWEISUNGEN3 gestartet.
Ein kleines Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
if ($user == "ESMZ-dEsiGnZ")
{
echo "Hallo Chef";
}
elseif ($user == "admin" || $user == "Moderator")
{
echo "Hallo Meister";
}
else
{
echo "Ich kenn dich nicht!";
}

Man hat natürlich die Möglichkeit nach dem ersten elseif weitere elseif-Abfragen zu schalten.

Switch


Es gibt eine weitere Kontrollstruktur, welche ich euch nicht vorenthalten will. Die switch-Fallprüfung. switch ist eigentlich nichts anderes als eine Folge von if-Statements des selben Ausdrucks. Oftmals möchte man die gleiche Variable mit mehreren Werten vergleichen und je nach dem dann unterschiedlichen Code ausführen. Genau dafür ist switch gedacht. Die Syntax ist folgende:

1
2
3
4
5
6
7
8
9
10
11
12
switch (VAR)
{
case WERT1:
ANWEISUNGEN1;
break;
case WERT2:
ANWEISUNGEN2;
break;
[...]
default:
DEFAULT-ANWEISUNGEN;
}

Hier wird der Wert der Variablen VAR getestet. Im Fall (case) dass VAR den Wert WERT1 hat (man achte auf den Doppelpunkt hinter dem case WERTx), werden die ANWEISUNGEN1 ausgeführt, im Fall des Wertes WERT2 werden die ANWEISUNGEN2 gestartet. So kann man noch beliebig viele weitere Fälle prüfen. Trifft keiner der Fälle zu, wird der default-Fall gewählt und die DEFAULT-ANWEISUNGEN werden ausgeführt. Der default-Fall ist hierbei nur optional und muss nicht enthalten sein. Ist er nicht vorhanden und es trifft keiner der case-Werte, wird die switch-Anweisung einfach beendet und kein Code ausgeführt. Mit dem Sschlüsselwort break verlässt man den switch-Block. Bitte denkt daran, dieses Wort nach jedem Fall zu benutzen, denn ansonsten wird einfach in den nächsten Fall gesprungen. So lassen sich nämlich verschiedene Fälle gruppieren, aber seht selbst:

1
2
3
4
5
6
7
8
9
10
11
switch ($zahl)
{
case 0:
echo "Die Variable \$zahl ist 0";
break;
case 1: case 2:
echo "Die Variable \$zahl ist 1 oder 2";
break;
default:
echo "Die Variable \$zahl ist weder 0 noch 1 noch 2";
}

Hat $zahl nun den Wert 1 wird der selbe Code ausgeführt wie bei dem Wert 2. Ein äquivalentes if-Konstrukt könnte in etwa so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
if ($zahl == 0)
{
echo "Die Variable \$zahl ist 0";
}
elseif ($zahl == 1 || $zahl == 2)
{
echo "Die Variable \$zahl ist 1 oder 2";
}
else
{
echo "Die Variable \$zahl ist weder 0 noch 1 noch 2";
}

Wie man sieht können wir uns durch die switch-Struktur ein paar mal das Wörtchen $zahl sparen ;-)
Ich erwähne vielleicht noch, dass sich natürlich auch Strings mit switch überprüfen lassen!

© 2009-2017 by Martin Scharm