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