Das „if else“-Konstrukt wird in PHP sehr häufig verwendet, daher haben die Entwickler eine Kurzform für if else herausgebracht. Auch wenn sie für Anfänger häufig nicht so leicht verstanden wird, kann sie in manchen Fällen Platz und Codezeilen sparen. Das ganze nennt sich der ternärer Operator und sieht folgendermaßen aus:
Die Syntax für die Kurzform von if else sieht folgendermaßen aus:
<?php (wenn Ausdruck wahr) ? (mache das hier) : (ansonsten das hier) ?>
Nun ein paar Beispiele:
<?php if($alter < 18) echo 'Du bist nicht volljährig'; else echo 'Du bist volljährig'; //als Kurzform echo ($alter < 18) ? 'Du bist nicht volljährig' : 'Du bist volljährig'; ?>
<?php if($a > $b) $b = $a; else $a = $b; //als Kurzform ($a > $b) ? $b = $a : $a = $b; ?>
<?php if($a > $b) $c = $a; else $c = $b; //als Kurzform $c = ($a > $b) ? $a : $b; ?>
Angenommen wir haben eine Anzeige die dir die Stunden ausgibt seitdem du das letzte mal eingeloggt warst. Also ist die Ausgabe „zuletzt eingeloggt vor x Stunden“, doch für die Stunde 1 müsste die Ausgabe folgendermaßen lauten: „zuletzt eingeloggt vor 1 Stunde“, also ohne das n.
Normal:
<?php if($stunden == 1) echo 'zuletzt eingeloggt vor 1 Stunde'; else echo 'zuletzt eingeloggt vor '.$stunden.' Stunden'; ?>
If Else Kurzform
<?php echo 'zuletzt eingeloggt vor '.$stunden.' Stunde'.(($stunden==1) ? "" : "n"); ?>
Natürlich kann man das auch immer mit dem kompletten „if/else“-Konstrukt machen, meistens ist das sogar verständlicher, doch in manchen Fällen ist eine Kurzform einfach nützlich.
If, Else if, Else
Mit dem ternären Operator lassen sich auch If, ElseIf, Else Abfragen verkürzen. Persönlich gefällt mir der Einsatz des ternären Operators nicht, da es meiner Meinung nach den Quellcode erschwert (sprich, für andere den Code zu verstehen). Dennoch zur Vollständigkeit:
<?php $auswahl = 1; echo $geschlecht = ($auswahl == 1) ? "männlich" : (($auswahl == 2) ? "weiblich" : "unbekannt"); ?>
Wenn die Variable $auswahl den Wert 1 hat, wird „männlich“ ausgegeben, für den Wert 2 wird „weiblich“ ausgegeben. Sollte $auswahl keinen Wert haben oder einen Wert der weder 1 noch 2 ist, wird „unbekannt“ ausgegeben.