<?php
$num = 15;
$res = ($num < 3) ? 1 : ($num < 10) ? 2 : ($num < 30) ? 3 : ($num < 100) ? 4 : 5;
?>
上のコードの出力結果は以下のうちどれか
正解は4が出力される。理由はPHPの三項演算子は左から評価できる箇所を順に評価するから。
問題の三項演算子を整形すれば以下のようになる。
$res = (((($num < 3) ? 1 : ($num < 10)) ? 2 : ($num < 30)) ? 3 : ($num < 100)) ? 4 : 5;
もし3より小さくなく、10より小さくなく、30より小さい・・・と評価して3と出力させたい場合は以下のようにしなければならない
$res = (($num < 3) ? 1 : (($num < 10) ? 2 : (($num < 30) ? 3 : (($num < 100) ? 4 : 5))));
今日ちょっとはまったのでメモ。