PHP における論理演算子と代入演算子の優先順位。
<p>最近、次のような一節でそれを見つけました。</p>
<pre class="brush:php;toolbar:false;">$x = 2 && $y = 3; echo (int)$x.':'.(int)$y;</前>
<p>このコード スニペットは出力 1:3 を生成します。演算子の優先順位表を見ると、論理演算子 || と && が代入演算子 = よりも優先順位が高いことがわかりました。したがって、最初の式は $x = ($y || 2) = 3; として扱われ、$x = (2 && $y) = 3; となり、最終的に $x = false = 3; と評価されます。 。次に、代入演算子には右順序があるため、インタプリタは false = 3 を試行する必要がありますが、これは明らかに不正です。したがって、私の意見では、上記のコード スニペットはコンパイルに失敗し、解析エラーまたは実行時エラーがスローされるはずです。しかし、代わりに、このスニペットは 1:3 を生成しました。これは、インタプリタが行うことは次のとおりであることを意味します。 </p>
<ブロック引用>
<p>a) $y=3</p>
<p>b) 2 && $y</p>
<p>c) $x = (2 && $y)</p>
</blockquote>
<p>なぜ演算子の優先順位に基づくのではなくこれを行うのですか?</p>