PHPのswitch文の書き方

PHPのswitch文の書き方を紹介します。

switch文を使用して処理を分岐させる

変数の値ごとに実行するコードを分岐させる場合はswitch文を使用します。変数の値が"Red"ならばこの処理、"Yellow"ではこの処理、"Blue"はこの処理というように、変数の値と指定された値が複数あり、それらと比較、一致した場合に、実行するようなプログラムを書く場合に便利なのがswtich文です。if文でも同様のコードは書けますが読みにくいコードになる場合があります。

上のような例をif文を使用して書くと以下のようなコードになります。

上のコードの実行結果は以下のようになります。

上記のコードは間違いではありません。しかし、場合によっては非常に読みにくいコードとなる場合もあります。このような場合にはswitch文を使うと簡潔に書くことがきます。

switch文の書式は以下のとおりです。

switch文ではまず、指定された変数値とcase後の値を比較していきます。そして、一致する値があった場合にその後に記述されたコードを次のbreak文まで実行し続けて、switch文は終了します。

defaultの後のコードは、変数がcase後に記述されたどの値とも一致しなかった場合に実行するコードを書きます。defaultは省略することも可能です。

実際の例を以下に示します。

上のプログラムの実行結果は以下のようになります。

また、複数の変数値で同じ処理をしたい場合は以下のように書きます。

上のプログラムの実行結果は以下のようになります。

変数「product」の値が「A製品」「B製品」のいずれに一致した場合も「echo "関東工場に出荷です";」を実行します。上の例では、変数の「pruduct」がA製品、B製品どちらの場合でも「関東工場に出荷です」と表示されます。

break文が記述しなかった場合の動作

break文が省略した場合、次のcaseのコードも引き続き実行されてしまいます。

実際にbreak文を省略した例を以下に示します。

上の実行結果は以下のようになります。

「B製品」に一致したときは「echo "東北工場に出荷です";」のみが実行されます。しかし、break文がないため次のcaseのコードに移行し、「C製品」に一致した場合にのみ実行される「echo "関西工場に出荷です";」が続いて実行されてしまいます。そして次の行でbreak文があるのでswitch文が終了します。

上記のように、switch文はif文のようにブロック({ })の中でのみ実行されるのではなく、break文の記述が見つかるかswitch文の最後までコードを実行し続けるという特性があります。

このようにswitch文はこのように便利な反面、上述したようにミスも起こりやすいです。このbreak文の記述忘れで、次のcaseのコードに移ってしまい、予期しない処理が実行されてしまうので注意が必要です。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて