2016-03-28 11 views
1

Wie kann ich einen kürzeren Ausdruck:Gibt es eine kürzere Syntax für den ternären Operator in PHP?

$variable = @$array["property"] ? $array["property"] : DEFAULT_VALUE_CONSTANT; 

Um so etwas wie diese:

$variable = @$array["property"] || DEFAULT_VALUE_CONSTANT; 

Jetzt true/false

+2

Shorter? Warum willst du kürzer? –

+0

@JayBlanchard, weil die getestete Eigenschaft diejenige ist, die zurückgegeben wird. Es scheint mir ein Überschuss zu sein. –

+2

Null Koaleszenz? PHP 7 => http://php.net/manual/en/language.operators.comparison.php '$ a ?? $ b ?? $ c' –

Antwort

9

Ja, es ist möglich, in PHP7 mit Null coalescing operator (??) bekomme ich

$variable = $array["property"] ?? DEFAULT_VALUE_CONSTANT; 

Wenn Sie PHP-Version < 7 eine Lösung verwenden, ist die Bitte vermeiden, mit @ statt isset()elvis operator

$variable = $array["property"] ?: DEFAULT_VALUE_CONSTANT; 

verwenden.

Referenzen:

?: operator (the 'Elvis operator') in PHP

+0

Ja @ fred-ii- hat es kommentiert. Aber mein Hosting-Provider unterstützt jetzt 5.6.7. Ich denke, ich kann nicht viel tun. –

+0

@KristosAthanasiadis Wie wäre es mit dem elvis-Operator? '$ array [" property "]?: DEFAULT_VALUE_CONSTANT;' – rray

+0

Sie haben absolut Recht. Das ist der Betreiber, nach dem ich gesucht habe! Können Sie Ihre Antwort bearbeiten? –

Verwandte Themen