三項演算子の入れ子でハマったら、マニュアルに思いっきり書いてあった件。
http://php.benscom.com/manual/ja/language.operators.comparison.php

評価順序が違うから、“重ねて使う"のはなるべく止めてね、とのこと。

以下の例は、一見"true"って出力されるように見えて、“t"と表示される。

echo (true?'true':false?'t':'f');

これはつまり、

echo ((true ? 'true' : 'false') ? 't' : 'f');

こういう評価順になるらしい。 なんでこんなことを。。。

でも、一応こうすれば期待通りに動く。

echo (true ? 'true' : ('false' ? 't' : 'f'));

いや、「評価順序が怪しい書き方はしない」が正解なんだけどもね。