PHPのネストした三項演算子の落とし穴

パーフェクトPHP』より。

次のコードの出力する値は?

echo true ? 1 : false ? 2 : 0;

ほとんどのプログラミング言語とは異なり、PHPの三項演算子は左結合です。
そのため、次のように評価されます。

echo ( (true ? 1 : false) ? 2 : 0);

最初の三項演算子の評価値は「1」になり、2つ目の三項演算子の結果が「2」になります。

三項演算子をネストする時は、括弧をつけて評価順を明確にした方がいいかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください