目次
・サンプル
・HTMLで使用する
switch文とは
switch(条件){ case 値 : 処理 break; ・・・ default: 処理 break; } |
- 条件の値とcaseの値が一致すれば、配下の処理が実行されます。
- breakでswitch文を抜けます。breakがないと下の判定(case/default)に行ってしまいます。
- defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
switch文 (複数の条件で処理を分ける)
<?php
$num1 = "2";
switch ($num1) {
case "1":
print "A";
break;
case "2":
print "B"; //Bが出力される
break;
default:
print "C";
}
8行目のcase "2"は変数の値と一致するのでその配下の処理が実行されます。
9行目の処理が実行されます。
10行目のbreakでswitch文を抜けます。
caseの後に条件を追加
<?php
$a = 8;
switch($a){
case $a < 5:
print("A");
break;
case $a < 10:
print("B");// Bが出力される
break;
default:
print "C";
}
5,8行目はcaseの後で比較(<)を行っています。
switch文の中でif文を使用
<?php
$a = 3;
switch($a){
case 3:
if ($a % 2 == 0) {
print("A");
} else {
print("B"); // Bが出力される
}
break;
default:
print "その他";
}
6行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。
breakがない場合(フォールスルー)
<?php
$a = "1";
switch($a){
case "1":
print "A"; // Aが出力される
case "2":
print "B"; //Bが出力される
break;
default:
print "C";
}
7行目は、breakがありません。
5行目のcase "1"の処理の後、8行目のcase"2"の処理も実行されます。
フォールスルー(fall through/落ちる)と呼ばれます。
breakを書き忘れたのかわかりづらいので使用しないほうが良いです。
HTMLにswitch文を書く時
<?php $num = 2; ?>
<?php switch ($num):
case "1": ?>
<p>A</p>
<?php break; ?>
<?php
case "2": ?>
<p>B</p><!-- Bが出力される -->
<?php break; ?>
<?php
default: ?>
<p>C</p>
<?php endswitch; ?>
3~14行目がswitch文です。
3行目のswitchの後ろには、コロン:がついています。
14行目は、endswitchがあります。switch文の終わりがわかりやすくなっています。
実行すると9行目が表示されます。5,13行目は表示されません。
関連の記事
PHP if文 条件で処理を分ける
PHP while文とdo…while文 処理を繰り返す (break/continue)