burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
10.02.2012, 09:31 Uhr - Impressum

Tutorials - Erste Schritte - Bedingungen - ...und ansonsten

Tutorials - Erste Schritte
Bedingungen: ...und ansonsten
Außer dem Wörtchen if und elseif gibt es auch noch das Wörtchen "else", englisch, frei übersetzt: ansonsten.
Es funktioniert als "Auffangsbehältnis" - wenn in der if-Bedingung weder das if noch eines der elseif's "wahr" ergibt, wird der "else"-Befehl ausgeführt:
<?php
$S = date("H");

if ($S < 4) echo "Ab ins Bett !";
elseif ($S < 10) echo "Guten Morgen";
elseif ($S < 13) echo "Guten Tag";
elseif ($S < 14) echo "Mahlzeit";
elseif ($S < 18) echo "Guten Tag";
elseif ($S < 21) echo "Guten Abend";
else echo "Gute Nacht";     /* wenn bisher keine Bedingung zutraf, echo "Gute Nacht" */
?>
Bisher sollte jeweils, wenn eine Bedingung zutraf nur ein Befehl ausgeführt werden.
Im folgenden Beispiel sollen 2 Befehle ausgeführt werden, nämlich zuerst soll etwas per echo ausgegeben werden und dann soll einzweiter echo-Befehl ausgeführt werden. Aber auch nur dann, wenn die if-Bedingung stimmt.

Wie werden beide echos nur bei wahrere Bedingung ausgeführt ? Ein if-Befehl bezieht sich ja nur direkt auf dem ihm folgenden Befehl.
Lösung: die geschweiften Klammern { }
(Zu erzeugen durch drücken AltGr + 7 und AltGr + 0 auf einer deutschen Tastatur.)

Und das schöne: es ist egal, wo genau man sie macht - das ist reine optische Geschmackssache
Hauptsache, sie umschließen die Befehle, die zu der Bedingung gehören sollen.
<?php
$S = date("H");

if ($S < 10)
     {
     echo "Guten Morgen";
     echo "<br />wird ausgegeben von 0 bis 10 Uhr<br />";
     }

if ($S >= 10 and $S < 18)
{
     echo "Guten Tag";
     echo "<br />wird ausgegeben von 10 bis 18 Uhr<br />";
}

if ($S >= 18) {
     echo "Guten Abend";
     echo "<br />wird ausgegeben von 18 bis 24 Uhr<br />";
}
?>
Denn ein reines Einrücken der Befehle nach rechts bringt überhaupt nichts:
NEGATIVBEISPIEL !
<?php
$S = date("H");

if ($S < 10)
     echo "Guten Morgen";     /* dieses echo steht noch im Banne des if's */
     echo "<br />wird ausgegeben von 0 bis 10 Uhr<br />";     /* dieses ist absolut frei und wird sich ausgeben */

if ($S >= 10 and $S < 18)
     echo "Guten Tag";     /* dto. */
     echo "<br />wird ausgegeben von 10 bis 18 Uhr<br />";

if ($S >= 18)
     echo "Guten Abend";
     echo "<br />wird ausgegeben von 18 bis 24 Uhr<br />";
?>
Das Script führt nicht zum gewünschten Ergebnis, die 2. echos werden immer ausgeführt.
Anders geschrieben erkennt man es auch leichter, was das Script nämlich macht:
<?php
$S = date("H");

if ($S < 10) echo "Guten Morgen";     /* der Bann etwas deutlicher dargestellt, da nun in ein und der selben Zeile */

echo "<br />wird ausgegeben von 0 bis 10 Uhr<br />";     /* und auch die Freiheit deutlicher dargestellt */

if ($S >= 10 and $S < 18) echo "Guten Tag";

echo "<br />wird ausgegeben von 10 bis 18 Uhr<br />";

if ($S >= 18) echo "Guten Abend";

echo "<br />wird ausgegeben von 18 bis 24 Uhr<br />";
?>
© 2004-2005 - Impressum