条件分岐
もし〜なら
- 基準で枝分かれするという発想
枝分かれの仕組みは「条件分岐」
- 昼だったら「こんにちは」と表示
- 夜だったら「こんばんわ」と表示
- 18時を基準にする
条件に応じて枝分かれする処理
- 条件:いまの時刻は18時以降である
- 条件を満たす:「こんばんは」と表示
- その意外の場合:「こんにちは」と表示
if文とは
- 条件に応じて実行する処理を記述
「いまの時間は18時以降?」の条件を組み立てる
- date関数の最初のパラメータに「G」を指定すると、0〜23までの「時」が返されます
- この数値を「変数 $hour」に格納して、時刻が18時を過ぎているかどうかの判断に使います
- if文の()には、この値「 $hour」が、18以上かどうかかを示す条件文($hour >= 18)を記述します
<?php $hour = date('G'); if ($hour >= 18) { echo 'こんばんは'; } else { echo 'こんにちは'; } ?>
「もしも」が増えたら「switch文」
- 条件が多い処理にif文は不向き
- 例:曜日ごとに違うメッセージを表示する
曜日ごとのメッセージ
- 日曜日:今日は定休日です
- 月曜日:9時〜22時まで営業
- 火曜日:9時〜22時まで営業
- 水曜日:特売日! 7時〜24時まで営業
- 木曜日:9時〜22時まで営業
- 金曜日:9時〜22時まで営業
- 土曜日:12時〜20時まで営業
これを「if文」で処理しようとすると「elseif」が多くなり、何に対しての「それ以外は」なのかわかりにくくなります。
選択肢から1つを選ぶ仕組みがあると便利
- 0(日曜日)の場合:「今日は定休日です」と表示
- 1(月曜日)の場合:「9時〜22時まで営業」と表示
- 2(火曜日)の場合:「9時〜22時まで営業」と表示
- 3(水曜日)の場合:「特売日! 7時〜24時まで営業」と表示
- 4(木曜日)の場合:「9時〜22時まで営業」と表示
- 5(金曜日)の場合:「9時〜22時まで営業」と表示
- 6(土曜日)の場合:「12時〜20時まで営業」と表示
「曜日」という基準を使って、当てはまる選択肢の処理を実行すればよい。
条件分岐(曜日番号が) { 0の場合:「今日は定休日です」と表示 3の場合:「12時〜20時まで営業」と表示 6の場合:「12時〜20時まで営業」と表示 それ以外の場合:「9時〜22時まで営業」と表示 }
switch文の使い方
- 選択肢の多い処理をすっきり扱う
- 「default」には、どれにも当てはまらなかった時の処理を記述します
switch(変数1) { case 値1: 処理A case 値2: 処理B default: 処理X }
曜日ごとに挨拶を切り替える
- 「break文」は、「switch文」から抜けるための命令です
<?php switch(曜日番号) { case 0: echo '今日は定休日です'; break; case 3: echo '特売日! 7時〜24時まで営業'; break; case 6: echo '12時〜20時まで営業'; break; default: echo '9時〜22時まで営業'; } ?>
- 実際の記述は、以下のようになります
<?php $w = date('w'); switch ($w) { case 0: echo '今日は定休日です'; break; case 3: echo '特売日! 7時〜24時まで営業'; break; case 6: echo '12時〜20時まで営業'; break; default: echo '9時〜22時まで営業'; } ?>
- 「月曜日」の場合
switch文で「おみくじ」を作る
- 「mt_rand関数」は、指定した範囲の数値をランダムに作成します
- 「mt_rand(1, 5)」と指定すると、1から5までの数値がランダムに作成されます
<?php $a = mt_rand(1, 5); switch ($a) { case 1: echo '大吉'; break; case 2: echo '中吉'; break; case 3: echo '小吉'; break; case 4: echo '吉'; break; default: echo '凶'; } ?>