PHP の三項演算子が左結合で使いにくいという話題についてです。 次のプログラムは大抵の言語では one を表示するのですが、PHP では two になってしまいます。 <?php $var = 1; echo ($var == 1 ? 'one' : $var == 2 ? 'two' : 'three') . "\n"; 三項演算子が左結合なので、このコードは次のように解釈され、 <?php $var = 1; echo (($var == 1 ? 'one' : $var == 2) ? 'two' : 'three') . "\n"; 文字列 'one' は真偽値としては true になるので、結果的に 'two' が戻されるというわけです。 このような言語仕様になっている理由が気になったので、探してみました。 Bug #61915 incorrect associativity