三項演算子が左結合 !?

発端となったのはこちらの記事。

PHP言語仕様のバグ - れぷそる・ふぁいやぁ・ぶれぇど

さらっと読んだときは、「まぁ仕様が気に食わないのはわかるけどそれをバグって言っちゃうのはちょっと…」と思いました。ええ、思いましたとも。

しかし、各言語の三項演算子の挙動を調べてみると、ほとんどの言語において三項演算子は右結合なのです。PHP のもとになった Perl でさえ。

な、なんだってー(AA 略)

そもそも三項演算子が連続するような書き方自体がどうなんだ、ということもあるんですが、それにしても「他が右結合なんだから当然 PHP も右結合でしょ」と思い込んで書くと痛い目を見るわけです。それって言語仕様としてどうなんだ。他がみんな前倣えで右結合に揃えてるのに PHP だけが独自路線を行く意味が全く分からない…。

「バグ」という言葉が適切かどうかはわかりませんが、「期待したとおりに動かない」という意味ではよろしくない挙動であることに間違いはありません。現在開発が進められている PHP 5.5 系統ではお願いですから右結合にしてください…ホンマ頼むわ orz