PHP で紐解くエルビス演算子 (?:)
複雑な PHP コードベースの奥深くでは、謎の演算子に遭遇するかもしれません。 ?: 演算子。 「エルヴィス演算子」と呼ばれるこの演算子は、「その目的は何ですか?」と疑問に思われるかもしれません。
?: 演算子は、本質的に、左のオペランドが「真実」であるとみなされる場合にその左のオペランドを評価します。それ以外の場合は右オペランド。言い換えると:
foo ?: bar
は三項演算子:
foo ? foo : bar
または従来の if-else ステートメント:
if (foo) { foo = foo; } else { foo = bar; }
ただし、三項演算子とは異なり、?: 演算子は左側のオペランドを 1 回だけ評価するため、効率が向上します。
使用例
一般的な 1 つコード スニペット:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
ここでは、$this->_handle->result() の結果を $items に割り当てます。 $items は null または false ですが、それ以外の場合は $items は変更されません。
追加の例
ここにいくつかあります。動作を明らかにするためのその他の例:
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'
今後 ?: 演算子に遭遇した場合は、その目標は、真実性に基づいて評価および代入する簡潔な方法を提供し、コードをより効率的で読みやすくすることであることを思い出してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3