PHP の ?: 演算子 (「エルビス演算子」) 質問する

PHP の ?: 演算子 (「エルビス演算子」) 質問する

今日、PHP コードでこれを見ました:

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

ここで使用されている演算子がよくわかりません?:。三項演算子のように見えますが、述語が真であるかどうかを評価する式が省​​略されています。これはどういう意味ですか?

ベストアンサー1

左辺のオペランドが真実の、それ以外の場合は右オペランド。

擬似コードでは、

foo = bar ?: baz;

大体次のように解決される

foo = bar ? bar : baz;

または

if (bar) {
    foo = bar;
} else {
    foo = baz;
}

違いはbar一度だけ評価されます。

fooこれを使用して、投稿したコード例に示されているように「セルフチェック」を行うこともできます。

foo = foo ?: bar;

これは、null または false の場合barに割り当てられ、それ以外の場合は変更されません。foofoofoo

さらにいくつかの例:

<?php
    var_dump(5 ?: 0); // 5
    var_dump(false ?: 0); // 0
    var_dump(null ?: 'foo'); // 'foo'
    var_dump(true ?: 123); // true
    var_dump('rock' ?: 'roll'); // 'rock'
    var_dump('' ?: 'roll'); //  'roll'
    var_dump('0' ?: 'roll'); //  'roll'
    var_dump('42' ?: 'roll'); //  '42'
?>

ちなみに、これはエルヴィスオペレーター

エルヴィスオペレーター

おすすめ記事