PHPプログラミングで人を幸せにしたい

PHPプログラミングで人を幸せにしたい


PHPプログラミングを勉強中のりょうま堂です。プログラミングは価値あるものを生み出せる数少ない技術。PHPは簡単なので入門に最適ですよ!

switch文で見やすい条件分岐を書こう

PHPプログラミングの基礎

多岐の条件分岐をswitch文を使って簡単に書こう

条件の多岐分岐はを実装するために、if~elseif~elseif~文の使い方を解説しました。
ですが多岐分岐には、switch文を使うことでより簡潔で見やすいコードになります。
条件フラグによって行う処理を変えたり、ログインしたユーザーのユーザー名に合わせてメッセージを変えるなど、使いどころはいっぱいあります。

switch文とif~elseif~elseif文

ではさっそくswitch文を使った簡単な条件分岐の例をみてみたいと思います。

$flag = 3;
switch($flag){
  case 1:
      echo '$flagの値は1です。';
      break;
  case 2:
      echo '$flagの値は2です。';
      break;
  case 3:
      echo '$flagの値は3です。';
      break;
  case 4:
      echo '$flagの値は4です。';
      break;
  default:
      echo '$flagの値は1~4ではありません。';
      break;
}
//
if($flag == 1){
  echo '$flagの値は1です。';
} elseif ($flag == 2){
  echo '$flagの値は2です。';
} elseif ($flag == 3){
  echo '$flagの値は3です。';
} elseif ($flag == 4){
  echo '$flagの値は4です。';
} else {
  echo '$flagの値は1~4ではありません。';
}
$flagの値は3です。
$flagの値は3です。

$flagの数値によって表示する文字列を変える条件分岐の例です。
下には同じことをif~elseif~else文で書いた場合です。
defaultのところはどのcaseにも該当しなかった場合の処理です。
if文でいうelse文のところですね。
 
条件式を囲む()の数が減り見やすくなりましたし、case:をキーに条件式の部分を探しやすくなりました。
ポイントは、条件に合った処理をしたあとはそこで分岐を終えたいので、各処理のあとにbreak;で終了させているという点です。
 
switch処理の終点がわかりにくい場合は次のように書くこともできます。
また、分岐の処理を完全に分けず、複数の条件の時に同じ処理をさせることもできます。
これら2点を合わせたコード例を以下に示します。

$name = 'ryoma';
switch($name):
  case 'souzi':
  case 'tosizou':
  case 'ryoma':
  case 'hazime':
      echo $name.'さんは試験合格です!';
      break;
  case 'izou':
      echo $name.'さんは不合格です・・・。';
      break;
endswitch;
//
if(($name == 'souzi') || ($name == 'tosizou') || ($name == 'ryoma') || ($name == 'hazime')){
  echo $name.'さんは試験合格です!';
} elseif ($name == 'izou'){
  echo $name.'さんは不合格です・・・。';
}
ryomaさんは試験合格です!
ryomaさんは試験合格です!

下のif文に比べると、条件の部分が縦に並んでいるので一目で見やすいですね。
switch:~endswitch; という書き方は、{~}に変わる書き方で、switchに限らず使うことができます。
if文なら if(条件式):~endif; という書き方もできます。

目次にもどる

switch文で注意したい点

switch文のcaseでの条件処理は、「==」によって行われており、「===」ではありません。
つまり、値の型の一致までは見ていないということです。
以下の例を見てみます

$flag = 3;
$flag = (int) $flag;
switch($flag){
  case '1':
      echo '$flagの値は1です。';
      break;
  case '2':
      echo '$flagの値は2です。';
      break;
  case '3':
      echo '$flagの値は3です。';
      break;
  case '4':
      echo '$flagの値は4です。';
      break;
}
$flagの値は3です。

このあたりの違いだけ一応知っておき、できるだけ自分が見やすい条件文を書きたいところです。
いきなり難しい書き方をするよりは、慣れたやり方で分岐の間違いをしないことの方が大事です。

目次にもどる

コメントフォーム

自分の勉強にもなりますので、コメントいただけるとうれしいです。

お名前・ニックネーム

 

タイトル

 

コメント ※HTMLタグは使えません

コメント

  • コメントはまだありません。