1

はい、これが非常に悪いコードであることはわかっていますが、それでも理解したいと思います。

$out = $a > 9 && $a < 15 ? "option1" : $a < 5 ? "option2" : "option3";

$out = $a > 9 && $a < 15 ? "option1" : ($a < 5 ? "option2" : "option3");

が 11 の場合$a、1 行目の結果は「オプション 2」ですが、2 行目の結果は「オプション 1」です。括弧のペアにはどのような影響がありますか?

4

2 に答える 2

4

最初の行は次のように解析されます。

$out = ($a > 9 && $a < 15 ? "option1" : $a < 5) ? "option2" : "option3";

これは次と同等です ( の場合$a == 11):

$out = "option1" ? "option2" : "option3";

"option1"ブール値 is に強制されるtrueため、上記は に評価され"option2"ます。

2 番目は、期待どおりに解析されています。

$out = ($a > 9 && $a < 15) ? "option1" : ($a < 5 ? "option2" : "option3");
于 2013-09-16T23:22:01.947 に答える