Ich habe das heute in einem PHP-Code gesehen:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Ich kenne den hier verwendeten ?:
Operator nicht. Es sieht aus wie ein ternärer Operator, aber der Ausdruck, anhand dessen bewertet werden soll, ob das Prädikat wahr ist, wurde weggelassen. Was heißt das?
php
coding-style
conditional-operator
language-construct
alpha_juno
quelle
quelle
null
oder irgendetwas hat. Sag einfach '||
. Alsoblah || 'default'
?||
Operator im Gegensatz zu JS, wo der Operand ganz links zurückgegeben wird, in PHP immer einen Booleschen Wert zurückgibt.Siehe die Dokumente :
quelle
expr2
ist, ist, dass es einfach verschwunden ist und nicht ausgewertet wird.$this->expensiveComputation() ?: "nope"
ist nicht identisch mit$this->expensiveComputation() ? $this->expensiveComputation() : "nope"
- expr1 wird nur einmal ausgewertet.Seien Sie vorsichtig mit Arrays. Wir müssen danach eine Prüfvariable schreiben
?
, weil:Aktualisiert
Von RFC. In Zukunft (in PHP 7) wird der Operator Null Coalesce Operator dies tun, zum Beispiel:
quelle
Eine weitere wichtige Überlegung: Der Elvis-Operator unterbricht den Zend Opcache-Tokenisierungsprozess. Ich fand das auf die harte Tour! Obwohl dies in späteren Versionen möglicherweise behoben wurde, kann ich bestätigen, dass dieses Problem in PHP 5.5.38 (mit integriertem Zend Opcache v7.0.6-dev) besteht.
Wenn Sie feststellen, dass einige Ihrer Dateien nicht in Zend Opcache zwischengespeichert werden können, kann dies einer der Gründe sein ... Ich hoffe, dies hilft!
quelle
Ja, das ist neu in PHP 5.3. Es gibt entweder den Wert des Testausdrucks zurück, wenn er als TRUE ausgewertet wird, oder den alternativen Wert, wenn er als FALSE ausgewertet wird.
quelle
TRUE
.