Bitte warten...

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.

Code kopieren
<?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().

Code kopieren
<?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).

Code kopieren
<?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.

Code kopieren
<?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>";
?>