B210 swich – case文

switch 文とは複数の値の中のいずれかと一致するかどうかを調べ、実行する処理を分ける方法です。条件によってはif文よりもswitch文の方が簡潔なコードで処理を実現できるケースもございます。今回はswitch文について紹介します。

switch – case文とは

switch – case文の基本

switch – case文の基本構文は下記のようになります。

PHP
switch (){
  case 値1:
=== 値1 の時に実行する処理A;
    ...
    break;
  case 値2:
=== 値2 の時に実行する処理B;
    ...
    break;
  case 値3:
=== 値3 の時に実行する処理C;
    ...
    break;
  default:
    式がいずれの値とも一致しないときに実行する処理D;
    ...
};

式 === 値1の際は処理A、式 === 値2の際は処理B、式 === 値3の際は処理C、どの式にも当てはまらない際は処理Dを実行します。

PHP
$animal = 'ねこ';

switch ($animal){
  case 'ねこ':
    echo '私は猫が好きです';
    break;
  case 'いぬ':
    echo'私は犬が好きです';
    break;
  default:
    echo'私は他の動物が好きです';
};

出力結果

PHP
私は猫が好きです

break文とは

break 文とは記述されている最も内側の繰り返し処理を終了させ次の処理へ移させるものです。

PHP
$animal = 'ねこ';

switch ($animal){
  case 'ねこ':
    echo '私は猫が好きです';
  case 'いぬ':
    echo'私は犬が好きです';
  default:
    echo'私は他の動物が好きです';
}

先ほどの例にbreak文がなく上記のような記述だと出力結果は下記のようになります。

出力結果

PHP
私は猫が好きです私は犬が好きです私は他の動物が好きです

case ’ねこ’ の際の処理が終わっても続けて他の処理を実行してしまいます。

PHP
$animal = 'ねこ';

switch ($animal){
  case 'ねこ':
    echo '私は猫が好きです';
    break;
  case 'いぬ':
    echo'私は犬が好きです';
    break;
  default:
    echo'私は他の動物が好きです';
}

上記の様にbreak文を記載することで、記述されている最も内側の繰り返し処理を終了させ次の処理へ移させる、つまりswitch文の処理を終了させ次の処理に移ることができます。

例題

以下コードの出力値はどれか

PHP
$age = 21;

switch ($age){
  case 20 :
    echo '私は20歳です';
  case 21:
    echo'私は21歳です';
  default:
    echo'私は20歳でも21歳でもありません';
}
  1. 私は21歳です
  2. 私は20歳でも21歳でもありません
  3. 私は21歳です私は20歳でも21歳でもありません
  4. 私は20歳です私は21歳です私は20歳でも21歳でもありません
回答

3. 私は21歳です私は20歳でも21歳でもありません
‘case 21’に一致するが、break文がないのでそれ以下の処理が実行されてしまうため。

以下コードの出力値はどれか

PHP
$age = 20;

switch ($age){
  case 20 :
    echo '私は20歳です';
    break;
  case 21:
    echo'私は21歳です';
    break;
  default:
    echo'私は20歳でも21歳でもありません';
}
  1. 私は20歳です
  2. 私は21歳です
  3. 私は20歳でも21歳でもありません
  4. 私は20歳です私は21歳です私は20歳でも21歳でもありません
回答

1. 私は20歳です
‘case 20’に一致するため。

---