数値の範囲指定をする際の注意点(初歩)

当たり前のことですが、ついつい忘れがちになってしまう。

それは、数値の範囲指定で条件分岐させる場合。

if($int < 0){
    echo “ゼロゼロ”;
}else{
    echo “ワンダフル”;
}

こういうのなら別にいいのですが、elseifを使ったりする場合。
例えば、、、

・「$intが10以上の場合と20以上の場合で実行する動作を分けたい」といった場合

if($int > 10){
    echo “じゅうじゅう”;
}elseif($int > 20){
    echo “にじゅうまる”;
}else{
    echo “まるまる”;
}

この条件分岐は誤り。

構文的には間違いないのでエラーがでないため、間違いだとわかりづらい。

何が間違いかは以下に説明。

********************************

一つ目の条件で「$int」が10以上の場合、という指定をしている。
そして二つ目の条件で「$int」が20以上の場合、という指定をしている。

仮に、$intが30の場合、どちらの条件にも当てはまるため、結局先に記述されている「10以上の場合」という条件が優先されてしまう。

そのため「$intが20以上の場合」という条件の中に書いた内容が実行されることは永遠に来ない、ということになる。

********************************

と、いうこと。

なので、正しくは、、、

if($int > 10 and $int <= 20){
    echo “じゅうじゅう”;
}elseif($int > 20){
    echo “にじゅうまる”;
}else{
    echo “まるまる”;
}

この書き方が正解。

・・・あぁ、なんて初歩的な部分で引っかかってしまったのだろう。。。

コメントを残す