icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

PHPで書くswitch文について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

1時間でできる無料体験!

そもそも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プログラミングで挫折しない学習方法を動画で公開中

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

breakの役割

前述されているようにbreak文が実行されると、switch文のブロックを抜けることができます。

ではbreak文がない場合を確認してみましょう。

<?php
    switch ($_REQUEST['study']) {
      case '理系':
        echo '医学部、歯学部、薬学部、農学部、理学部、工学部';
      case '文系':
        echo '法学部、経済学部、文学部、経営学部、教育学部';
      case 'その他':
        echo '体育学部、看護学部';
    }
    echo 'をご紹介いたします。'; 
?>

「理系」を選択して確定ボタンを押すと、下記が表示されます。

なんだか全ての学部が表示されているように見えますね。

これはbreak文をなくしたことによる影響です。

break文がcaseにない場合は、そのcaseの処理(今回の例では「理系」を選択した場合の処理)を実行したあとに次のcaseに記載している処理も実行する動作になります。

そのため、

「理系」を選択した場合の「医学部、歯学部、薬学部、農学部、理学部、工学部」

「文系」を選択した場合の「法学部、経済学部、文学部、経営学部、教育学部」

「その他」を選択した場合の「体育学部、看護学部」

が全て表示されます。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

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の処理もしてしまうんだ。

 

1時間でできる無料体験!

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する