Ternärer Operator – Kurzform für If then else

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.

hier geht's weiter...



Kommentare


Hallo,
ich glaube, hier ist was verdreht:
<?php if($a > $b) $c = $a; else $c = $b;
//als Kurzform $c = ($a > $b) ? $b : $a; ?>
Es müsste glaub ich heißen:
//als Kurzform $c = ($a>$b) ? $a : $b; ?>


ah stimmt, vielen Dank für den Hinweis!


Vielleicht noch elseif anschneiden?

&lt;?php 
$if = 'Du bist noch nicht vollj&auml;hrig'; 
$elseif = 'Gibt aber keinen Rentnernachlass'; 
$else = 'Komm rein und hab Spass'; 
 
echo ($alter &lt; 18) ? $if : (($alter &gt; 68) ? $elseif : $else); 
?&gt;

…oder so ähnlich :-P


Danke für den Hinweis, hab es ergänzt.

Kommentar schreiben

Kommentar

Hilfe:

<strong>fettgedruckt</strong> => fettgedruckt

<em>kursiv</em> => kursiv

<a href="http://wordpress.lernenhoch2.de">Link</a> => Link

[code]<?php echo 'hello world'; ?>[/code]

*

Feedback Formular