PHP 復習メモ - PHPの三項演算子は左結合

PHP が他の言語と違う変なトコの 1つです。
(ちなみに PHP のバージョンは 5.5.9 です)

あまりこんな書き方はしないと思うので 実害はないかもしれませんが PHP の三項演算子は 他の言語と違って左結合です。

$ php -r "echo true ? 1 : false ? 2 : 3;"
2

結果は 2 が返ってきます。

これは次のように左結合で解釈されるためです。

((true ? 1 : false) ? 2 : 3);

他の言語だとだいたい右結合ですよね。

(true ? 1 : (false ? 2 : 3));

とりあえず、三項演算子を使うときはカッコで囲みましょう。

余談ですが、1つ目の値(判定に使っている値)と 2つ目の値(TRUEの時の値)が同じ場合、 省略することができます。

$result = func() ?: null;

I/O 処理などがあり 2回実行したくないときに使えます。

Google サイト内検索

Amazonアソシエイト