PHP: Bedingungen
Durch die Möglichkeit, die Verarbeitung von Daten an Bedingungen zu knüpfen und durch Schleifen laufen zu lassen, wird die dynamische Produktion von Hypertext erst möglich.
Eine Bedingung wird in PHP wie in den meisten Programmiersprachen durch die Funktion if () formuliert. In der Klammer steht die eigentliche Bedingung, wobei diese durch eine Reihe logischer Operatoren ausgedrückt werden kann. Komplexere Reihen von Bedingungen können wie bei Rechenoperationen in runde Klammern gesetzt werden.
== – gleich
!= – ungleich
< – kleiner als
<= – kleiner oder gleich
> – größer als
>= – größer oder gleich
! – NICHT
&& – UND
|| – ODER
XOR – ENTWEDER ODER
Anschließend wird der auszuführende Befehl angegeben. Soll eine Reihe von Befehlen ausgeführt werden, werden diese in geschweiften Klammern {} notiert.
<?php
$zufall = rand(0, 100);
if ($zufall < 50) echo "Die Zahl ".$zufall." ist kleiner als 50.";
if ($zufall > 50) echo "Die Zahl ".$zufall." ist größer als 50.";
if ($zufall == 50) {
echo "Die Zahl ".$zufall." ist gleich 50.";
exit;
}
echo "<br><a href='test.php'>nochmal</a>";
?>
Eigentlich wird lediglich überprüft, ob der Inhalt der Klammer von if () den Wert TRUE bzw. 1 hat, damit die Bedingung als erfüllt betrachtet wird. Daher kann man auch Ausdrücke als Bedingung einsetzen, die das Ergebnis TRUE bzw. FALSE oder 1 bzw. 0 zurückgeben.
Der Ausdruck $a = 5 ist z. B. immer TRUE, da die Wertzuweisung immer erfolgreich ist. Als Bedingung würde diese Wertzuweisung ausgeführt werden und den Wert TRUE zurückgeben, womit die Bedingung erfüllt ist. Um aber z. B. zu prüfen, ob $a den Wert 5 besitzt, wird das doppelte Istgleich-Zeichen == verwendet.
Vorsicht aber bei Zeichenketten, die numerischen Werten entsprechen. Hier werden führende 0-Zeichen ignoriert. Daher muss man für einen Vergleich das dreifache Istgleich-Zeichen === verwenden.
Ebenso ist eine Variable selbst immer TRUE, wenn sie einen Wert enthält, der ungleich 0 und keine leere Zeichenkette ist.
Um zu überprüfen, ob eine Variable überhaupt initialisiert wurde (auch wenn sie eine leere Zeichenkette oder 0 enthält), verwendet man isset().
<?php
$a = 10;
if ($a = 5) echo "\$a hat den Wert ".$a.".<br>";
if ($a == 10) echo "\$a hat den Wert ".$a.".<br>"; # unwahr, denn $a hat inzwischen den Wert 5
if ("5" == "05") echo "5 ist gleich 05<br>"; # wahr
if ("6" === "06") echo "6 ist gleich 06<br>"; # unwahr
$b = "";
if ($b) echo "\$b ist keine leere Zeichenkette oder ungleich 0<br>"; # unwahr
if (!$b) echo "\$b ist eine leere Zeichenkette oder gleich 0<br>"; # wahr
if (isset($c)) echo "\$c wurde initialisiert."; # unwahr
?>
Möchte man eine alternative Konsequenz anbieten, die eintritt, wenn die Bedingung nicht erfüllt wurde, wird dies mit else angegeben. Nach else kann ebenfalls eine Bedingung abgefragt werden, in diesem Fall verwendet man elseif () (else if () ist ebenso zulässig).
<?php
$zufall = rand(0, 100);
if ($zufall < 50) echo "Die Zahl ".$zufall." ist kleiner als 50.";
elseif ($zufall > 50) echo "Die Zahl ".$zufall." ist größer als 50.";
else {
echo "Die Zahl ".$zufall." ist gleich 50.";
exit;
}
echo "<br><a href='test.php'>nochmal</a>";
?>
Wird die gleiche Variable nach verschiedenen Werten abgefragt, kann man auch switch () verwenden. Hierbei wird jeder bedeutende Wert hinter das Attribut case gesetzt, gefolgt von einem Doppelpunkt :. Jede der Konsequenzen wird in der Regel durch break beendet, um zu verhindern, dass die folgenden Konsequenzen ebenfalls ausgeführt werden. Die Konsequenz, die folgen soll, wenn keine der Bedingungen TRUE ist, wird nach default: notiert.
<?php
$zufall = rand(0, 2);
switch ($zufall) {
case 0:
echo "Die Zahl ".$zufall." ist gleich 0.";
break;
case 1:
echo "Die Zahl ".$zufall." ist gleich 1.";
break;
default:
echo "Die Zahl ".$zufall." ist gleich 2.";
exit;
}
echo "<br><a href='test.php'>nochmal</a>";
?>