今回はプログラミング言語PHPのswitch文(switch~case)について、Web開発経験のある筆者が解説します。
PHP switch~caseを使えば、「条件に応じて処理を分ける」ということが可能になります。
本記事では、PHP初心者向けに、switch~caseの書き方、具体例(数値と文字列)、switch~caseとif文の違いについて解説します。
※if文については、PHP if文について解説した記事をご覧ください。
読み終える頃にはPHP switch~caseが理解できているでしょう。ぜひ最後までご覧ください。
公開日:2017年7月24日
PHP switch~caseの書き方
プログラミング言語の処理で「条件に応じて処理を分ける」ということをしたいときには、「if文」と「switch文」で実現が可能です。今回は、switch文の書き方を見ていきましょう。
※if文については、PHP if文について解説した記事をご覧ください。
switch文の構文は以下のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 |
switch( 変数 ) { case 値A: //変数が値Aのとき実行される 文A break; // 文Aの実行が終わったらswitchから抜ける。 case 値B: //変数が値Bのとき実行される 文B break; // 文Bの実行が終わったらswitchから抜ける。 ・・・・ default: //上記の条件に変数がどれも当てはまらない場合に実行される。 文C } |
変数で値を受け取り、その変数と一致するcaseの値するものがあれば、そのcaseブロックに書かれた処理が実行されます。
該当するcaseがない場合は、defaultに書かれた処理が実行されます。また、case値に指定できる数字(int)または文字列(string)です。
break文・・・breakが実行されるとswitch文から抜ける処理になります。swich文では、基本的にはbreak文を書くことを心がけましょう。break文を書かないと後続のcase句が実行されてしまうため意図しない結果が返されてしまうことがあります。
もちろん、break文を書かない処理(フォールスルー)を意図して書く時もあります。しかし、多くの場合、意図してbreak文を書いていないのかなど判断が難しくなります。それによって、可読性が下がり管理しにくくなってしまう可能性があります。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >PHP switch~caseの具体例(数値)
先程、紹介したswitch文の構文を使って、簡単なプログラムを書いてみましょう。
次のサンプルコード1は、サイコロを振って、1がでた場合は金賞,2の場合は銀賞,3の場合は銅賞,それ以外の値は参加賞と出力するプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//サンプルコード1 $val = 1; switch($val){ case 1: //$valの値が1の時実行される。 print "値は1:金賞です。"; break; //switch文から抜ける。 case 2: //$valの値が2の時実行される。 print "値は2:銀賞です."; break; //switch文から抜ける. case 3: //$valの値が3の時実行される. print "値は3:銅賞です。"; break; //switch文から抜ける。 default: //$valの値が上記に当てはまらない場合に時実行される。 print "参加賞です"; } |
1 2 |
//サンプルコード1の実行結果 値は1:金賞です。 |
変数$valで受け取った数値(1)を受け取ると”値は1:金賞です。”が実際に出力されています。
PHP switch~caseの具体例(文字列)
先程はcaseに数値を指定して、switch文を書きました。指定できる値は、数値以外にも文字列が使えます。それでは、実際にサンプルコードを見て行きましょう。
次のサンプルコード2は、指定された文字列(英語)が入力されると日本語訳を返します。(例:apple →リンゴ.banana→バナナ)
1 2 3 4 5 6 7 8 9 10 11 12 |
//サンプルコード2 $str="banana"; switch ($str){ case "apple" : //strが「apple」の時に実行する print "リンゴ"; break; //switch文から抜ける case "banana" : //strが「banana」の時に実行する print "バナナ"; break; //switch文から抜ける default: //strが上記以外の場合に実行する print "翻訳できませんでした。"; } |
1 2 |
//サンプルコード2の実行結果 バナナ |
caseの中で文字列が指定されており、実際にswitch文で文字列が使用できることがわかります。
PHP switch~caseとif文との違いとは?
条件分岐を処理するするものとしてはif文とswitch文があります。分岐の処理としては、同じことを実現することができます。では、どのような使い分けが必要なのでしょうか。
if文とswitch文の使い分けのポイント
・単純な2分岐であれば、if文を使う
・多分岐(3分岐)以上であればswitch文を使う
多分岐をif文で書いているのであれば、switch文で見やすく書けるかを検討してみましょう。
switch文にすることによってソースコードが管理しやすくなるかもれませんよ。パフォーマンスに関してですが、多分岐の処理であれば、switch文のほうが処理が早いとされています。
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
PHP初歩からLaravelまでをつなぐように知識を網羅しています。連想配列や関数からフォーム(HTTP)/セキュリティ/PDO/クラスなど。composer/名前空間などを使った現代的な開発方法を体験することができます。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
初学者ですが丁寧な説明でわかりやすく、受講しながら手を動かして実際にコードを書くことでより理解が深まります
評価:★★★★★
PHPを書く案件があったので、視聴してみました。
こともなさげに解説されていらっしゃいますが、重要な点を押さえて、効率的に解説されていて、とても助かりました。
他の講座もチェックしてみます!
最新情報・キャンペーン情報発信中