三項演算子で複数の変数に代入する方法の質問に対する回答を書いた後、私が書いたコードを実際に試してみました。
true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400;
var_dump($w); var_dump($r);
(無駄だと気にしないでください。これは理論上の話です。)
ここで、演算子の優先順位に従って、PHP がこのようにすることを期待します。
true ? $w = 100 xor $r = 200 : $w = 300 xor $r = 400 ;
(true) ? ( $w = 100 xor $r = 200 ) : ( $w = 300 xor $r = 400 );
(true) ? (($w = 100) xor ($r = 200)) : (($w = 300) xor ($r = 400));
三項演算子の最初の部分が評価されると、次のように出力されます。
int 100
int 200
しかし、代わりに私は得る
int 100
int 400
三項演算子の両方の部分を実行する必要があるため、これは私にとって非常に奇妙です。
私の考えのどこかが間違っているとしましょう。