私はPHPの三項演算子を使用することができます。しかし、私は、以下のコードがif-elseの同等の構造と一致しない理由を理解しようとする際に、障害物を見つけました。テストは異なる回数で3回実行されました。各構造の出力はコードの下にあります。入れ子のPHP三項問題:三項出力!= if - else
三元:
$decimal_places = ($max <= 1) ? 2 : ($max > 3) ? 0 : 1;
三元出力:
最大:-100000小数:0
最大:0.48小数:0
最大:0.15小数:0
のif-else
if($max <= 1)
$decimal_places = 2;
elseif($max > 3)
$decimal_places = 0;
else
$decimal_places = 1;
のif-else出力:
最大:-100000小数点:2
最大:0.48小数点:2
最大:0.15小数点:2
誰も私にこれら2つのコントロール構造体は同じデータを出力しませんか?
3進演算子をネストするのは良い考えではない1つの理由 –
それらは完全に同等ではありません。 elseifの全体は三項構造で短絡します。彼らはまたネストされることを意図していない。 –
[三項演算子に関するPHPマニュアルから](http://de3.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary):「スタックする」を避けることをお勧めします"三項表現。単一のステートメントの中で複数の三項演算子を使うときのPHPの振る舞いは分かりません。 – Gordon