In der Programmierung geht es oft darum, zu überprüfen, ob eine bestimmte Bedingung erfüllt ist, um dann eine Anweisung auszuführen oder, wenn die Bedingung nicht erfüllt ist, eine andere Anweisung auszuführen.
Beisielsweise könnte man abfragen ob ein User eingeloggt ist. Ist es der Fall erscheint sein Konto, ist er nicht eingeloggt erscheint die Login Seite.
Derartige bedingte Anweisungen oder Verzweigungen kann man mit einer if-Struktur erstellen. Nach dem if wird in Klammern eine Variable mit Datentyp Boolean oder ein Ausdruck der true oder false zurückgibt eingegeben.
Ist die Bedingung erfüllt / true wird die darauf folgende Anweisung oder Anweisungen ausgeführt.
Bedingungen werden mit Wahrheitswerten wie true oder false und mit Hilfe von Vergleichsoperatoren programmiert, wie <
kleiner als, >
größer als oder ==
für gleich.
$speed = 120; if($speed < 50){ echo "Fahren Sie in diesem Tempo weiter" }else{ echo "Fahren Sie langsamer."; }
Man kann auch eine Boolsche Variable einfügen. Diese muss nicht auf true oder false überprüft werden, denn sie liefert ja diesen Wert.
$userLogin = true; if($userLogin){ echo "Hello User"; }else{ echo "Please Login"; }
if(Bedingung true){ Fall A tritt in Kraft; }else{ Fall B tritt in Kraft; }
Man kann auch weitere Bedingungen definieren, die nacheinander abgearbeitet werden.
if (Bedingung1 true){ Anweisung 1; } elseif(Bedingung2 true){ Anweisung 2; } else{ Anweisung 3; }
Hier ein Beispiel für eine Altersabfrage:
$alter = 63; if($alter < 16){ echo "Sie dürfen diesen Film nicht gucken."; }elseif( $alter >= 16){ echo "Sie sind alt genug für diesen Film."; }
Vergleichsoperatoren liefern true oder false und können in if-Strukturen eingesetzt werden.
Weitere Vergleichsoperatoren(weitere Infos Vergleichsoperatoren)
Operator | Info | Beispiel | Ergebnis |
---|---|---|---|
== | gleich | 3 == 3 | true |
!= | ungleich | 3 != 3 | false |
> | größer als | 3 > 2 | true |
< | kleiner als | 4 < 2 | false |
>= | größer gleich | 3 >= 3 | true |
<= | kleiner gleich | 3 <= 3 | true |
Mehrere Bedingungen verknüpfen die alle erfüllt sein müssen
Hat man mehrere Bedingungen, die alle erfüllt sein müssen, werden diese
mit 2 kaufmännischen unds &&
verknüpft. Dabei macht es Sinn, die einzelnen Bedingungen in Klammern einzuschließen. Dabei müssen alle Bedingungen erfüllt sein.
$a = true; $b = false; $c = $a && $b; // Ergebnis false
Mehrere Bedingungen verknüpfen von denen mindestens eine erfüllt sein muss
Wenn nur eine von mehreren Bedigungen erfüllt sein muß, werden diese mit
2 Pipe-Zeichen ||
verbunden. Es liegt auf der Taste unten links mit den < Klammern.
Den Wahrheitswert umkehren
Das Ausrufezeichen ist ein unärer Operator er benötigt nur einen Wert. Damit wird der boolsche Wert umgekehrt aus true wird false oder aus false wird true;
$d = !true // Ergebnis false
Operator | Bedeutung | Erklärung | Beispiel | Info |
---|---|---|---|---|
&& | logisches Und | Beides muss erfüllt sein | $a < 6 && $a > 1 | $a zwischen 2 und 5 |
|| | oder | Eins von beiden muss erfüllt sein | $a < 6 || $a > 20 | $a kleiner als 6 oder größer als 20 |
! | Negation, | Verneinung aus true wird false, aus false wird true Es ist ein unärer Operator weil er sich nur auf einen Wert bezieht. |
!20 | alles außer 20 |
In einer bedingten Anweisung kann man je nach Abfrageergebnis Anweisungen ausführen. Das macht man mit einer if-else-Struktur. Eine einfachere Schreibweise erreicht man mit ternären Auswahloperator.
$alter = 14; if($alter >= 18){ echo "Herzlich willkommen."; }else{ echo "Eintritt erst ab 18."; }
Es folgt die Alternative mit dem Auswahloperator. Man beachte die Schreibweise mit Fragezeichen ? und Doppelpunkt :
$alter = 30; ($alter >= 18) ? echo "Herzliche Willkommen" : echo "Eintritt erst ab 18";
Bedingung ? True-Anweisung : Else-Anweisung;
Html und Php in einer If-Struktur verschachtelt
Html und PHP Elemente können ineinander verschachtelt sein. Sogar innerhalb des Anweisungsblocks in geschweiften Klammern. So wird der Html Code von der if Anweisung abhängig gemacht.
Hier erfolgt die Ausgabe in Html. Der Wert beträgt 1 |
<?php |
Anstatt der geschweiften Klammern kann man auch diese Schreibweise mit Doppelpunkt und endif; einsetzen. Das elseif ist nicht erforderlich. Ein zusätzliches else ließe sich noch einsetzen. Siehe auch diese Auflistung verschiedener Schreibweisen.
a ist kleiner als b so siehts aus |
|
Wenn man eine Variable auf mehrere Bedingungen testen will, kann man sie mit if
else verschachteln, oder man benutzt die Switch-Anweisung. Die Switch-Anweisung
prüft, ob die Variable mit den aufgelisteten Werten übereinstimmt, wenn
ja, wird die Anweisung ausgeführt.
Mit break werden weitere Prüfungen unterbunden.
Stimmt keiner der Werte überein, wird die Anweisung unter default ausgeführt.
switch ( Formel ) {
case wert1 :
Anweisung;
break;
case wert2 :
Anweisung;
break;
default :
Anweisung;
}
Dortmund: Pastors Wohnort | <?php |
Mit PHP 8.o gibt es den match-Ausdruck. Damit wird ein Wert zurück gegeben ähnlich wie bei einer Funktion mit Rückgabewert.
In folgendem Beispiel wird match() direkt echo zugewiesen dadurch wird "drei" direkt ausgegeben. Man könnte match() auch einer Variablen zuweisen.
Wichtig ist, dass man immer einen default Wert zuweist, sonst funktioniert es nicht.
Drei | $zZahl = 3; echo match($zZahl){ 1 => "Eins", 2 => "Zwei", 3 => "Drei", default => "Kein gültiger Wert" }; |
In folgendem Beispiel wird auf mehrere Werte geprüft, die mit Kommata getrennt aufgeführt werden. Hier wird match() einer Variablen zugewiesen.
Gerade Zahl |
$zahl = 8; $ergebnis = match($zahl){ 2,4,6,8,10 => "Gerade Zahl", 1,3,5,7,9 => "Ungerade Zahl", default => "Kein gültiger Wert" }; echo $ergebnis; |
Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de