戻る 本当?'a': false?'b': 'c';
これは「a」を返すはずですが、そうではありません。代わりに「b」を返します。条件演算子のさまざまな部分を処理するPHPの順序にバグはありますか?
この状況で複数の条件演算子は良い考えですか?正しく機能しているように見えます。
(もちろん、trueとfalseは例の目的のためです。実際のコードでは、それぞれtrueとfalseに評価されるステートメントです。はい、確かにそれを知っています)
戻る 本当?'a': false?'b': 'c';
これは「a」を返すはずですが、そうではありません。代わりに「b」を返します。条件演算子のさまざまな部分を処理するPHPの順序にバグはありますか?
この状況で複数の条件演算子は良い考えですか?正しく機能しているように見えます。
(もちろん、trueとfalseは例の目的のためです。実際のコードでは、それぞれtrueとfalseに評価されるステートメントです。はい、確かにそれを知っています)
三項式を「積み重ねる」ことは避けることをお勧めします。単一のステートメント内で複数の三項演算子を使用した場合の PHP の動作がわかりにくい
「非自明な三項動作」の下のPHPマニュアルから。
三項演算子は左から右に評価されるため、中かっこを追加しない限り、期待どおりに動作しません。以下は機能しますが、
return (true ? "a" : (false ? "b" : "c"));
2番目の三項演算子への入力として評価(true ? 'a' : false)
され、「a」が真であると解釈されていると思われます。適切にブラケットを試してください。
操作の順序:
>>> return true ? 'a' : false ? 'b': 'c';
'b'
>>> return true ? 'a' : (false ? 'b': 'c');
'a'
私に説明されたのと同じように説明しましょう。ただし、何が起こっているのかを理解するには、括弧内に注意を払う必要があります。
以下のPHPコード
true ? "a" : false ? "b" : "c"
以下と同等です。
(true ? "a" : false) ? "b" : "c"
以下のコード
true ? "a" : false ? "b" : "c"
以下と同等です。
true ? "a" : (false ? "b" : "c")