すぐに理解できる!PHPでswitch文を使う方法【初心者向け】

初心者向けにPHPでswitch文を書く方法について解説しています。条件分岐と言えばif文がおなじみかもしれませんが、switch文を使えば簡潔に書くことができます。覚えておくと便利なので、ぜひ使い方を理解しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPで書くswitch文について解説しています。ぜひ自分でも書けるようにしておきましょう。
そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

switch文とは

ユーザーが選択した内容によって、実行する処理を分岐させたい場合がありますよね。
たとえば、自分の行きたい大学の学部を選択して、その内容を表示する場合を考えてみましょう。

「理系」を選択した場合

「医学部」「歯学部」「薬学部」「理学部」「農学部」「工学部」を表示する。

「文系」を選択した場合

「法学部」「経済学部」「文学部」「教育学部」を表示する。

「その他」を選択した場合

「体育学部」「看護学部を表示する。
このような分岐処理をしたい場合、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のプログラミングで挫折しない学習方法を動画で公開中

switch文を書いてみよう

それでは、実際にswitch文を使用して、phpのプログラムを書いてみましょう。
今回のサンプルプログラムでは、大学の学部を「理系」「文系」「その他」に分け、選択された分類の学部を表示させます。
選択したラジオボタンによって、処理を分岐させ、表示内容を切り替えます。
6e100bf475e721f06ae304812ee0e602
実際のプログラムは、下記のように入力と出力の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

b181b15092643e637b41c4220a3bcb40-620x161
「理系」を選択して確定ボタンを押すと、下記の学部が表示されます。
c243007259d241382340da26031a8ee2-620x31

実行結果2

d416f7655a921a14d1914bd333538d00-620x161
「文系」を選択して確定ボタンを押すと、下記の学部が表示されます。
ec9c96bba5805bc34a6907568646c18d-620x31

実行結果3

ed762e77aee20574f4b9f0e864ee570e-620x160
「その他」を選択して確定ボタンを押すと、下記の学部が表示されます。
33c2c5dcf6ab8e47585804ec9f36cb15-620x29

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を勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか?

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。