PHP でエルヴィス演算子 (?:) を飼いならす
謎めいた ?: 演算子が PHP コードの一部を装飾しており、あなたは困惑しています。この簡潔な記事では、その謎めいた性質を掘り下げ、その真の目的を解明します。
?: 演算子の公開
「エルビス演算子」としても知られる ?: 演算子" は三項演算子に似た機能を持ちます。ただし、その独特の特徴は、述語が真であると証明されたかどうかを評価する式が存在しないことです。その動作の内訳は次のとおりです。
左側のオペランドが真実である場合、つまり、null、空の文字列、false、ゼロ以外の場合、左側のオペランドに評価されます。
If the左のオペランドは falsy で、右のオペランドに評価されます。
重要なのは、式です。左側のオペランドは 1 回だけ評価され、効率が保証されます。
例
さらに明確にするために、次のコード スニペットを検討してください:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
Inこのインスタンスでは、$items が真実 (null または空でない) の場合、$items の値はそれ自体に割り当てられます。ただし、$items が false の場合、$this->_handle->result('next', $this->_result, $this) の結果が $items に代入されます。これは、デフォルト値を提供することで、未定義の値を効果的に処理します。
追加のアプリケーション
?: 演算子は、セルフチェック シナリオでも役立ちます:
foo = foo ?: bar;
ここで、foo が null または false の場合、foo には bar の値が割り当てられます。それ以外の場合、foo は変更されません。
汎用性のショーケース
その汎用性を説明するために、次の例を考えてみましょう。
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'); // '0' var_dump('42' ?: 'roll'); // '42'
「エルヴィス オペレーター」の由来
その独特のあだ名「エルヴィス オペレーター」は、エルヴィス プレスリーの髪に似ていることに由来しています。エルビスのロックがふさふさしたポンパドールのスタイルか後ろに滑らかにスタイルされていたのと同じように、演算子の左オペランドは真か偽のいずれかで、結果の値が決まります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3