IF-Bedingungen mit Fragezeichen und Doppelpunkt in PHP

Do, 04.06.2009 - 19:26 -- Daniel Espendiller

IF-Bedingungen können in PHP mit Fragezeichen und Doppelpunkt dargestellt werden. Somit kann man sich in bestimmten Situationen einiges an Tipparbeit sparen und erhält durchaus übersichtlicheren Quellcode.

Diese Vergleichsoperation heißt Trinitäts-Operator. Es ist allerdings erforderlich, dass hierfür Werte zurückgeben werden.

Hier ein paar Beispiele:

mit Klammern

if (count ($links) > 1) {
  $links = join (" | ",$links);
} else {
  $links = "";
}
 
//oder alternativ
(count ($links) > 1) ? ($links = join (" | ",$links)) : ($links = "");

echo Ausgaben

//Falsch da kein Rückgabewert
($blah==5) ? echo "hurra!" : echo "schade";
 
//richtig
echo ($blah==5) ? "hurra!" : "schade";

return Werte

if (isset($this->_filesReceived['vari'])) { return $this->_filesReceived['vari']; } else { ";" }
 
return (isset($this->_filesReceived['vari'])) ? $this->_filesReceived['vari']: "";

PHP 5.3

Ab PHP 5.3 kann der mittlere Teil weggelassen werden.
Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

return (isset($this->_filesReceived['vari'])) ?: "";

Disqus - noscript

if (count ($links) > 1) {
$links = join (" | ",$links);
} else {
$links = "";
}

//oder alternativ
(count ($links) > 1) ? ($links = join (" | ",$links)) : ($links = "");

Edit:

//oder alternativ
$links = (count ($links) > 1) ? (join (" | ",$links)) : ("");

Oder Kürzer:

$links = $links ? join(' | ', $links) : '';

@Roman:
Oder Kürzer:

$links = $links ? join(' | ', $links) : '';

wo ist bei deinem beispiel die überprüfung count($links) > 1 ?!
$links = $links hat keinen return, wenn dann

$links == $links, was immer true ist....