if~esleif~else文で複雑な条件分岐をしよう
if文による条件分岐は、if~else文の2分岐だけでなく3分岐・4分岐と複雑に分岐させることもできます。
そのときにはif~elseif~else文を使って条件分岐をしてやります。
目次 Table of Contents
if~elseif~else文の使い方
if~elseif~else文を使った条件分岐の例を示します。
if文による分岐はカッコの閉じ忘れが起こりやすいです。
ネスト(入れ子:カッコの中にまたカッコ)が深くなるとわけわからなくなるので、ネストの深さに合わせて書き出し位置をそろえるようにしましょう。
if($a >15){
echo '$aは15より大きいです。';
} elseif ($a < 8) {
echo '$aは8より小さいです。';
} else {
echo '$aは8以上15未満の数字です。';
}
(条件1)の場合はこの処理、(条件2)の場合はこの処理、いずれにも該当しない場合はこの処理、という感じで並べてやればOKです。
if~elseif~elseif~elseif~elseと、たくさんの枝分かれをつくることもできます。
if文の便利な使い方
if文を使うとき、必ずしも該当しないときの処理(デフォルトの処理)を書く必要はありありません。
最後のelse文を書かなくてもいいんです。
スクリプトの処理を強制的に終了させる関数die()と組み合わせて、次のような処理で使うことが多いかなと思います。
if($a > 15){
echo '$aは15より大きいです';
die();
}
if($a < 8){
echo '$aは8より小さいです。';
die();
}
echo '$aは8以上15未満の数字です。';
さきほどとの違いは、die()による強制終了があるので、15より大きい場合と8より小さい場合はそこでスクリプトが終わります。
このif文の処理のあとに何か他のスクリプトがあっても、全く処理されないというわけです。
ユーザーからのフォーム入力を受け取るときや、入力する文字列を半角英数字に限りたいときなどに活躍します。
上の例で言えば、
15より大きい場合を排除
↓
8より小さい場合を排除
↓
めでたく審査に通った場合のみ次の処理に進む、という流れになっています。
このif文による排他処理は、変に条件分岐するよりは間違いが少なくなると思います。
コメントフォーム
自分の勉強にもなりますので、コメントいただけるとうれしいです。