PHP PHP入門講座 プログラミング

【PHPプログラミング入門講座】[解答と解説] 条件分岐 (switch文)

PHPプログラミングのキービジュアル

[解答と解説] 条件分岐 (switch文)

前ページの練習問題「【PHPプログラミング入門講座】[練習問題] 条件分岐 (switch文)」の解答&解説です。
練習問題が解けたら、このページで答え合わせをしてみましょう!

練習問題1

次のプログラムは、
「変数$rankingの値が1の場合は『金メダルです。』と出力し、
変数$rankingの値が2の場合は『銀メダルです。』と出力し、
変数$rankingの値が3の場合は『銅メダルです。』と出力し、
それ以外の場合は何も出力しない。」
という処理を行うPHPプログラムです。
ただ、何かが間違っています。
間違っている内容を指摘してください。

<?php
  $ranking = 2;
 
  switch($ranking) {
    case 1:
      echo '金メダルです。';
    case 2:
      echo '銀メダルです。';
    case 3:
      echo '銅メダルです。';
  }

練習問題1の解答と解説

<解答>

各caseの処理の最後に「break;」が記述されていません。
正しくは次の通りです。

<?php
  $ranking = 2;
 
  switch($ranking) {
    case 1:
      echo '金メダルです。';
      break;
    case 2:
      echo '銀メダルです。';
      break;
    case 3:
      echo '銅メダルです。';
      break;
  }

<解説>

switch文を使う場合は、「break;」を書き忘れてしまわないように注意しましょう。

余談ですが、最後の「echo '銅メダルです。';」の後ろの「break;」は、その後ろに「case ***:」や「defalt:」がないため、書かなくても処理としては問題ありませんが、後からプログラム修正して、「case ***:」や「defalt:」を追加した場合に「break;」を書き忘れるミスにつながるので、念のため、書いておいた方が良いです。
「将来的なバグ防止のために念のために書いておく」という考え方は、良いプログラムを書くための方法のひとつです。

練習問題2

次のif文をswitch文で書き換えてください。

<?php
  $english = 'south';
  if($english === 'north') {
    echo '日本語で「北」です。';
  } else if($english === 'south') {
    echo '日本語で「南」です。';
  } else if($english === 'west') {
    echo '日本語で「西」です。';
  } else if($english === 'east') {
    echo '日本語で「東」です。';
  } else {
    echo '該当する日本語が見つかりませんでした。';
  }

練習問題2の解答と解説

<解答>

<?php
  $english = 'south';
  switch($english) {
    case 'north':
      echo '日本語で「北」です。';
      break;
    case 'south':
      echo '日本語で「南」です。';
      break;
    case 'west':
      echo '日本語で「西」です。';
      break;
    case 'east':
      echo '日本語で「東」です。';
      break;
    default:
      echo '該当する日本語が見つかりませんでした。';
  }

<解説>

初めての人は、switch文を書くのが難しかったかもしれません。
「各caseの最後にbreak; を書き忘れていないか。」「if文のelseは、switch文の場合はdefault:になる。」など、switch文の構造を理解しておきましょう。

練習問題3

1から9までの整数で、奇数の場合は「奇数です。」と出力し、偶数の場合は「偶数です。」と出力するPHPプログラムをswitch文を使って書いてください。

練習問題3の解答と解説

<解答>
※これは解答例です。

<?php
  $num = 3;
  switch($num) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 9:
        echo '奇数です。';
        break;
    case 2:
    case 4:
    case 6:
    case 8:
        echo '偶数です。';
        break;
  }

<解説>

これも問題は、もしかしたら難しかったかもしれません。
最初は分からなくてもOKです。何度も繰り返しプログラムを書いてみて、徐々に問題解決力も身につけていきましょう。

上記の解答(解答例)では変数名を「$num」にしていますが、「$number」でも「$a」でも何でもOKです。
1から9までの整数で、奇数は「1, 3, 5, 7, 9」偶数は「2, 4, 6, 8」になります。
複数のcaseの値に対して同じ処理を実行したい場合は、この解答のように「break;」を意図的に記述しないで書くことで対応できます。

実際に自分でこのプログラムを書いて、動作確認してみてくださいね!
自分でプログラムを書いて、何度もエラーを出して、その原因を見つけて解決する力がプログラミング上達につながります。

おわりに

お疲れ様でした。
いかがでしたでしょうか?

もし間違えた練習問題がありましたら、前の記事「【PHPプログラミング入門講座】条件分岐 (switch文)」戻って読み直し、再度、練習問題にチャレンジしてください。

正解できた人は、おめでとうございます!
次の記事に進んでいきましょう!

PHPプログラミング入門講座 〜 全記事一覧 〜

-PHP, PHP入門講座, プログラミング
-, , , , ,

Copyright© ハッピー・プログラミング・ライフ , 2020 All Rights Reserved.