if else

if / else / elseif

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;
}

Wenn nur eine Anweisung ausgeführt werden soll, kann man auf die geschweiften Klammern verzichten. Die geschweiften Klammern bedeuten generell, es ist ein Anweisungsblock, in dem mehrere Anweisungen mit Komma getrennt aufgeführt werden können.

elseif

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

Vergleichsoperatoren liefern true oder false und können in if-Strukturen eingesetzt werden.
Weitere Vergleichsoperatoren(weitere Infos Vergleichsoperatoren)

Vergleichsoperatoren
Operator Info Beispiel Ergebnis
== gleich 3 == 3 true
!= ungleich 3 != 3 false
<> 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
=== gleich
(Typ und Wert)
"3"===3 true
!== ungleich
(Typ oder Wert)
"3"===3 false

Das dreifache = Gleichheitszeichen überprüft auf gleichen Wert und gleichen Datentyp.
Das !== überprüft ob Wert oder Datentyp nicht gleich ist.

Spacesphip Operator

Der Spaceship Opertor Vergleichsoperator gibt 3 verschiedene Wert aus: -1, 0 und 1.
Er überprüft die Werte ob sie gleich sind oder ob der erste Wert größer oder kleiner als der zweite Wert ist.
Der Operator wird in Sortierfunktionen gebraucht

Spacship Operator <=>
Info Beisiel Ergebnis
erster Wert kleiner 3 <=> 4 -1
erster Wert größer 4 <=> 3 1
beide Werte gleich 3 <=> 3 0

Null Coalescing Operator ??

siehe auch PHP Manual

Der Null Coalescing Operator (Koaleszens) überprüft ob eine Variable gesetzt wurde. Eine nicht gesetzte Variable erzeugt den Wert Null.
Der Operator besteht aus 2 Fragezeichen ??
Nach den Fragezeichen gibt man einen Wert an, der zugewiesen wird, wenn der Wert Null geliefert wird, oder mit anderen Worten, wenn die abgefragte Variable nicht vorhanden ist.

$name = $_POST["vorname"] ?? "Standardname";

Im Beispiel wird der Wert von $_POST["vorname"] der Variablen $name zugewiesen, sofern er vorhanden ist oder true ist.

Wenn die Variable $_POST["vorname"] nicht vorhanden ist, wird der Standardwert zugewiesen, welcher hier "Standardname" heißt.

 

Logische Operatoren

siehe PHP Manual

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
Logische Operatoren
Operator Bedeutung Erklärung Beispiel Info
and logisches Und Beides muss erfüllt sein $a > 6 and $a < 20 $a zwischen 7 und 19
&& $a > 6 && $a < 20
or oder Eins von beiden muss erfüllt sein, oder beide. $a < 6 or $a > 20 $a kleiner als 6 oder größer als 20
|| $a < 6 || $a > 20
xor entweder oder Eins von beiden muss erfüllt sein, aber nicht beide $a%2 == 0 xor $a < 20 $a ungerade Zahlen die kleiner als 20 sind oder gerade Zahlen die größer gleich 20 sind.
! 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

Ternärer Bedingungsoperator

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 Bedingungsoperator. 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;

Der ternäre Bedingungsoperator wird oft auch eingesetzt um einer Variable einen Wert zuzuweisen.

$alter = 17;
$ausgabe = ($alter >= 18) ?  "Herzliche Willkommen" :  "Eintritt erst ab 18";
echo $ausgabe;

Floats vergleichen

Fließkommazahlen (floats) und Boolsche Überprüfungen können zu Problemen oder fehlerhaften Ausgaben führen, weil nicht genau definiert ist auf wieviele Stellen hinter dem Komma eine Zahl definiert ist. Dazu folgendes Beispiel

    $a = 0.15;
    $b = 1 - 0.85;
    echo $a . "<br>" . $b . "<br>";

    if ($a == $b)
        echo "gleich";
    else
        echo "ungleich";
     

0.15
0.15
ungleich

Um floats miteinander zu vergleichen, muss man folgendermaßen vorgehen. Man subtrahiert die beiden Zahlen. Setzt das Ergebnis auf eine absolute Zahl, das heißt aus einer minus Zahl würde eine plus-Zahl. Dann überprüft man ob dieser Wert kleiner ist als eine kleine Zahl, die von den Kommastellen her ausreicht.

    if(abs($a - $b) < 0.0001)
    echo "gleich";
    else
    echo "ungleich";

gleich

Doppelpunkt anstatt geschweifter Klammern und endif

Anstatt der geschweiften Klammern kann man auch diese Schreibweise mit Doppelpunkt und endif; einsetzen. Man beachte den Doppelpunkt hinter elseif(): Ein zusätzliches else: ließe sich auch einsetzen.

Wozu braucht man das? Da man einer geschlossenen Klammer bei komplexen Konstruktionen oft nicht ansieht, wozu sie gehört, kann bei komplexen Anweisungen, diese Notation übersichtlicher sein.

a ist kleiner als b so siehts aus

<?php
$a=1;
$b = 2;
if ($a == $b):
echo "$a ist $b";
elseif ($a < $b):
echo "$a ist kleiner als $b";
endif;

?>

Auch bei while Schleifen ist es möglich, anstatt der geschweiften Klammer einen Doppelpunkt zu nutzen.
Das Schlüsselwort bei der while-Schleife lautet endwhile und bei der for Schleife endfor


If-Struktur von HTML unterbrochen

Eine if Struktur und auch alle anderen PHP Programmierungen können von HTML unterbrochen werden. Hier wird innerhalb des Anweisungsblocks in geschweiften Klammern, der PHP Block unterbrochen. Das Beispiel hier macht nicht viel Sinn, es soll nur aufzeigen, dass so etwas durchaus möglich ist.

Hier erfolgt die Ausgabe in Html.
Der Wert beträgt 1
<?php
$wert=1;
if($wert==1){
?>
Hier erfolgt die Ausgabe in Html.<br>
<?php
echo "Der Wert beträgt ", $wert;
}
?>

 


Switch-Anweisung

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
$Ort="Dortmund";
switch ( $Ort) {
case "Warstein":
echo $Ort, ": Pastors Feriendomizil";
break;
case "Dortmund" :
echo $Ort, ": Pastors Wohnort";
break;
default :
echo "kein Wohnort vom Pastor";
}
?>

Match

Mit PHP 8.o gibt es den match-Ausdruck. Damit kann man eine Variable auf mehrere Werte überprüfen und je nachdem, welcher Wert zutrifft, wird ein Wert zurück gegeben, ähnlich 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