387 Stimmen

?: Operator (der 'Elvis-Operator') in PHP

Ich habe das heute in einem PHP-Code gesehen:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

Ich bin nicht vertraut mit dem ?: Operator, der hier verwendet wird. Er sieht aus wie ein ternärer Operator, aber der Ausdruck, der ausgewertet wird, wenn das Prädikat wahr ist, wurde weggelassen. Was soll das bedeuten?

9 Stimmen

Ich kannte den Namen 'Elvis' nicht. +1 für das hier.

4voto

Atli Punkte 7669

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 Alternativwert, wenn er als FALSE ausgewertet wird.

-1voto

ohjay Punkte 11

Ich denke, der Zweck ist die bedingte Ausführung:

$a ?: func(); 

Die Ergebnisse von func() werden nur ausgeführt, wenn $a einen Wert hat, der zu FALSE aufgelöst wird.

if(!$a){
    func();
}

thre Zuordnung ist optional $a = $a ?: func() ist wie:

if(!$a){
    $a = func();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X