■ PHP:ネストした三項演算子

PHPの三項演算子の結合規則は他言語と順序が異なるので注意が必要
前回記事:PHP:三項演算子の省略記法


例えば以下のようなネストした三項演算子、結果は?
$flag1 = true;
$flag2 = false;
echo $flag1 ? 1 : $flag2 ? 2 : 0

答えは「2」

これは三項演算子の結合規則が左結合のため。

先ほどのソースは以下のように展開される。
echo ( ( $flag1 ? 1 : $flag2 ) ? 2 : 0);

ネストした三項演算子はなるべく使わない、使う場合はカッコで演算順序を明示することが必要。



次回記事:PHP:実行演算子


PHP学習

0 件のコメント:

その他の記事