すぐに理解できる!PHPでswitch文を使う方法【初心者向け】
初心者向けにPHPでswitch文を書く方法について解説しています。条件分岐と言えばif文がおなじみかもしれませんが、switch文を使えば簡潔に書くことができます。覚えておくと便利なので、ぜひ使い方を理解しましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PHPで書くswitch文について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
switch文とは
switch文は、変数の値によって処理を変えたい場合に便利です。
同じ変数を異なる値と比較して、値に応じて処理を実行できます。
例えば、変数の値が「理系」の場合は「〇〇部」を表示、「文系」の場合は「〇〇部」を表示、「その他」の場合は「〇〇部」を表示するといった場合にswitch文が便利です。
たとえば、自分の行きたい大学の学部を選択して、その内容を表示する場合を考えてみましょう。
「理系」を選択した場合
「医学部」「歯学部」「薬学部」「理学部」「農学部」「工学部」を表示する。
「文系」を選択した場合
「法学部」「経済学部」「文学部」「教育学部」を表示する。
「その他」を選択した場合
「体育学部」「看護学部を表示する。
このような分岐処理をしたい場合、if文を使用すると
<?php $study = '理系'; if($study == '理系'){ echo '医学部、歯学部、薬学部、農学部、理学部、工学部'; } else if($study == '文系'){ echo '法学部、経済学部、文学部、経営学部、教育学部'; } else if($study == 'その他'){ echo '体育学部、看護学部'; } echo 'をご紹介いたします。'; ?>
となりますが、switch文を使用すると、とても簡潔に記述できます。
分岐処理といえば、if文ですよね?
そうそう。ただ、switch文の方が書きやすかったり、見通しが良くなる場合があるんだ。
if文では出来ないことがあったりするんですか?
基本的には複数条件を適用させる以外は同じかな。とりあえず、switch文を書いてみよう!
switch文の書き方
switch文は、{ }で囲み、{ }内には、複数のcase文を並べて分岐処理を行います。
switch文の式の値が、case文に記述した値と等しい場合、そのcase文の処理を実行します。
また、各case文の最後にはbreakを入れることが多いです。case文の処理を実行したあとにbreak文が実行されると、switch文のブロックを抜けることができます。
基本構文
switch(式){ case 値A: 式の値が値Aと等しいときの処理; break; case 値B: 式の値が値Bと等しいときの処理; break; case 値C: 式の値が値Cと等しいときの処理; break; ...... }
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
switch文を書いてみよう
それでは、実際にswitch文を使用して、phpのプログラムを書いてみましょう。
今回のサンプルプログラムでは、大学の学部を「理系」「文系」「その他」に分け、選択された分類の学部を表示させます。
選択したラジオボタンによって、処理を分岐させ、表示内容を切り替えます。
実際のプログラムは、下記のように入力と出力の2つのプログラム構成としました。
major-info.php(入力プログラム)
本校へようこそ! 学部を選択してください。 <form action="major-select.php" method="post"> <p><input type="radio" name="study" value="理系" checked>理系</p> <p><input type="radio" name="study" value="文系">文系</p> <p><input type="radio" name="study" value="その他">その他</p> <p><input type="submit" value="確定"></p> </form>
major-select.php(出力プログラム)
<?php switch ($_REQUEST['study']) { case '理系': echo '医学部、歯学部、薬学部、農学部、理学部、工学部'; break; case '文系': echo '法学部、経済学部、文学部、経営学部、教育学部'; break; case 'その他': echo '体育学部、看護学部'; break; } echo 'をご紹介いたします。'; ?>
それでは、実行結果を見てみましょう。
実行結果1
「理系」を選択して確定ボタンを押すと、下記の学部が表示されます。
実行結果2
「文系」を選択して確定ボタンを押すと、下記の学部が表示されます。
実行結果3
「その他」を選択して確定ボタンを押すと、下記の学部が表示されます。
breakの役割
前述されているようにbreak文が実行されると、switch文のブロックを抜けることができます。
ではbreak文がない場合を確認してみましょう。
<?php switch ($_REQUEST['study']) { case '理系': echo '医学部、歯学部、薬学部、農学部、理学部、工学部'; case '文系': echo '法学部、経済学部、文学部、経営学部、教育学部'; case 'その他': echo '体育学部、看護学部'; } echo 'をご紹介いたします。'; ?>
「理系」を選択して確定ボタンを押すと、下記が表示されます。
なんだか全ての学部が表示されているように見えますね。
これはbreak文をなくしたことによる影響です。
break文がcaseにない場合は、そのcaseの処理(今回の例では「理系」を選択した場合の処理)を実行したあとに次のcaseに記載している処理も実行する動作になります。
そのため、
「理系」を選択した場合の「医学部、歯学部、薬学部、農学部、理学部、工学部」
「文系」を選択した場合の「法学部、経済学部、文学部、経営学部、教育学部」
「その他」を選択した場合の「体育学部、看護学部」
が全て表示されます。
defaultを使ってみよう
更に柔軟なプログラムを書く方法として、defaultを使用する方法があります。
caseのみを使用した場合、どのcaseにも当てはまらない場合が存在する時の処理ができません。
そういう場合にdefaultを指定すると、caseに当てはまらない場合の結果として処理してくれます。
どのcaseにも当てはまらない場合の表示結果
国際情報体育学部をご紹介いたします。 |
major-info.php(入力プログラム)
本校へようこそ! 学部を選択してください。 <form action="major-select.php" method="post"> <p><input type="radio" name="study" value="理系">理系</p> <p><input type="radio" name="study" value="文系">文系</p> <p><input type="radio" name="study" value="国際" checked>国際</p> <p><input type="radio" name="study" value="情報">情報</p> <p><input type="radio" name="study" value="体育">体育</p> <p><input type="submit" value="確定"></p> </form>
major-select.php(出力プログラム)
<?php switch ($_REQUEST['study']) { case '理系': echo '医学部、歯学部、薬学部、農学部、理学部、工学部'; break; case '文系': echo '法学部、経済学部、文学部、経営学部、教育学部'; break; default: echo '国際情報体育学部'; break; } echo 'をご紹介いたします。'; ?>
defaultの実行結果処理
本校へようこそ! 学部を選択してください。 ○理系 ○文系 ●国際 ○情報 ○体育 確定 |
国際を選択して確定ボタンを押すと下記の学部が表示されます。
これは、理系と文系以外の選択肢は、当てはまるcaseが無く、全てdefaultへ処理されるためです。
国際情報体育学部をご紹介いたします。 |
おわりに
いかがでしたでしょうか。if文を使用して分岐させることもできますが、switch文を使用すると、よりすっきり記述できますよね。ぜひ、一度試してみてください。
switch()に指定した値でをcaseで振り分けていますね。
こう書くと見通しが良くなるよね。また、switch文の()内をtrueって書いて、caseの後に条件式を書くこともできるんだ。こうするとifとelseifの代わりとして使えるし、見通しも良いよね。
breakというのは何でしょうか?
breakがない場合、条件が当てはまれば下に書いてあるcaseの処理もしてしまうんだ。
PHPを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!