今回は、条件によって処理を複数に分ける方法を紹介します。
前回学習した if(条件) { 条件にマッチする場合の処理 } で表現される記述に、elseif や else のブロックを追加することで、複数の分岐を作成することができます。
elseif / else の書式
if(条件1) {
条件1にマッチする場合の処理
} elseif(条件2) {
条件1にマッチせず、条件2にマッチする場合の処理
} elseif(条件3) {
条件1~2にマッチせず、条件3にマッチする場合の処理
} else {
条件1~3のいずれにもマッチしない場合の処理
}
- elseif のブロックは、ifブロックとelseブロックの間に、幾つでも追加できます。
- elseif のブロックは、無くても問題ありません。
- else のブロックは、末尾に1つだけ記述することができます。
- else のブロックは、無くても問題ありません。
※ elseif は 「else if」のように半角スペースを空けて記述することも可能です。ただし、微妙な違いがあるので注意してください。(参考:マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~)
具体的なコードを記述してみましょう。
以下は合計金額に応じた送料を表示させるコードです。
<?php
$price = 500; //商品の値段:500円
$total = $price * $_POST["unit"]; // $_POST["unit"]は購入個数
$msg = ""; // 変数の初期化
if($total >= 10000) {
$msg = "送料は無料です";
} elseif($total >= 3000) {
$msg = "送料は300円です";
} else {
$msg = "送料は800円です";
}
echo $msg;
これをフローチャートで表すと、以下のようになります。
比較の順番
もし、以下の順番で条件を記述してしまうと、合計金額が10000円以上であっても、送料が300円かかってしまいます。仮に合計金額が15000円の場合、「10000円以上」という条件よりも先に、「3000円以上」という条件に引っ掛かってしまうからです。
if($total >= 3000) {
$msg = "送料は300円です";
} elseif($total >= 10000) {
$msg = "送料は無料です";
} else {
$msg = "送料は800円です";
}
echo $msg;
大なり記号を使用する場合は大きい順に、小なり記号を使用する場合は小さい順に比較するのが基本になります。