Die ganz normale if-else -Bedingung ist sicher jedem geläufig, doch nicht jeder kennt den Trinitäts-Operator, welcher die Bedingung in manchen Fällen deutlich verkürzen kann.
Nachfolgend ein erstes Beispiel, bei welchem die aktuelle Uhrzeit ermittelt und eine passende Anrede ausgewählt wird:
<?php
// Uhrzeit ermitteln (Stunden ohne führende Null)
$time = date('G');
// Anrede ausgeben
if ($time < 18) {
echo 'Guten Tag';
} else {
echo 'Guten Abend';
}
?>
Nun kommt der Trinitäts-Operator “?” ins Spiel, dieser ist wie folgt aufgebaut:
(Bedingung ? wenn true : wenn false)Auf das erste Beispiel bezogen würde dies nun so aussehen:
<?php
// Uhrzeit ermitteln (Stunden ohne führende Null)
$time = date('G');
// Anrede ausgeben
echo 'Guten ' . ($time < 18 ? 'Tag' : 'Abend');
?>
Zuerst kommt die Bedingung mit $time < 18, ist diese wahr (true), so wird der Code vor dem Doppelpunkt verarbeitet, andernfalls der hinter dem Doppelpunkt.
Hier noch ein zweites Beispiel zur Verdeutlichung. Eine kleine Funktion, welche die größere von zwei übergebenen Zahlen ermittelt (ähnlich der Standardfunktion max()). Zuerst die normale Schreibweise:
<?php
// Eigene Max-Funktion
function my_max($a, $b) {
if ($a > $b) {
return $a;
} else {
return $b;
}
}
echo my_max(2, 5); // = 5
?>
Und hier die kürzere Fassung:
<?php
// Eigene Max-Funktion
function my_max($a, $b) {
return ($a > $b ? $a : $b);
}
echo my_max(2, 5); // = 5
?>
finde ich sehr interessant und kann ich gebrauchen.
danke!
frage:
kann ich die funktion verschachteln:
echo 'Guten ' . ($time <= 18 and $time >= 10 ? 'Tag' : $time < 10 and $time >=0 ? 'Morgen' : 'Abend');
? vergessen und
danke!
Hallo detlef,
sicherlich kann dies beliebig verschachtelt werden, jedoch solltest du && als UND-Operator benutzen:
echo 'Guten ' . ($time <= 18 && $time >= 10 ? 'Tag' : $time < 10 && $time >=0 ? 'Morgen' : 'Abend');
als php-(wie heißt das?)noob (?) prompt meine frage:
weshalb?