読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

条件演算子(三項演算子)…

PHP

ずーっと前に木村さん(だっけ?)が言ってたのはこのことだったんだなぁと…。
三項演算子

注意:


三項演算子を "積み重ねて" 使用することは避けましょう。
ひとつの文の中で複数の三項演算子を使用した際の PHP の振る舞いは、
少々わかりにくいものです。


例3 三項演算子のわかりにくい挙動




<?php
// ぱっと見た感じでは、これは 'true' と表示されると思うでしょう。
echo (true?'true':false?'t':'f');

// しかし、実際には上の出力結果は 't' です。
// なぜなら、三項演算子は左から右へ順に評価されるからです。

// 上のコードをもう少しわかりやすく書くと、このようになります。
echo ((true 'true' false) ? 't' 'f');

// まず、最初の式が 'true' と評価されます。この 'true' は
// (bool)true と評価されるので、それをもとに二番目の三項
// 演算子が評価されます。
?>




コード書いてて「おかしい!」と思った後すぐに気づけたからよかったけど、これ罠すぎるだろ…。
それと公式のマニュアルで「三項演算子」とか言っちゃっていいの?条件演算子って言おうぜ。