【PHP入門】switch文の書き方、if文との違いについて

投稿日: 作成:   更新:

PHPのswitch文について解説します。

  • PHPのswitch文の書き方が知りたい
  • if文との違いは何だろう?
  • switch文を使うのに、注意点とかあるのだろうか?
  • switch文で複数条件のやり方

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
これからプログラミングを始める方に向けて、少しでも分かりやすく解説していきたいと思います。

それでは行きましょう!

switch文の書き方

PHPのswitch文はどんな時に使うのかと言いますと、「1つの値に対して条件分岐する」ときに使用します。

switch文の書き方のポイントは次のようになります。

Point

  • switchの()の中には1つの値をセット
  • 条件は「case文」で分岐する
  • どれも一致しない条件は「default文」を使用する(if文のelseと同じ効果)

上記のポイントを踏まえてソースコードを書いてみます。
1つの値「$val」に対して、caseで「バナナ」かどうかを判定しています。

<?php

$val = "バナナ";

// switchの()の中には1つの値をセット
switch ($val) {

    // 条件は「case文」で分岐する
    case "バナナ":
        echo "バナナを発見!<br>";
        break;

    // どれも一致しない条件は「default文」を使用する(if文のelseと同じ効果)
    default:
        echo "バナナはなかった・・・<br>";
        break;
}

?>

実行結果:

「case “バナナ”」に一致しましたので、「バナナを発見!」が表示されました。

一致しなかったときは、defaultの「バナナはなかった・・・」が表示されます。
if文でいうと「else」と同じような役割ですね。

では、switch文とif文の違いはあるのでしょうか?

switch文とif文の違い

switch文とif文の違いですが正直に言って、
特に違いはない
です。

2つの違いは、ソースコードの書き方くらいでしょうか。
なので、switch文で書くか、if文で書くか人によって好みが分かれます

switch文とif文で、同じ条件のソースコードを書いてみましたので、比べてみてください。

switch文の場合

<?php

$val = "バナナ";

switch ($val) {
    case "バナナ":
        echo "バナナを発見!<br>";
        break;

    default:
        echo "バナナはなかった・・・<br>";
        break;
}

?>

if文の場合

<?php

$val = "バナナ";

if ($val == "バナナ") {
    echo "バナナを発見!<br>";

} else {
    echo "バナナはなかった・・・<br>";
}

?>

どうですか?
switch文とif文に大差ないと思いませんか?

このように、ソースコードの書き方が違うくらいでしかないです。

また、switch文でできることは、if文でできます。
その反対に、if文でできて、switch文でできないことは多々あります。

ちなみに私はif文で書くことの方が多いです。

switch文の注意点

switch文の注意点としては、case文に「break;」を入れる必要があります。

if文では{}で囲んだ中だけが実行されますが、switch文の場合はbreak;を入れないと次のcase, defaultが実行されてしまいますので注意ください。

試しに、わざと「break;」を抜いたソースコードを書いてみました。

<?php

$val = "バナナ";

switch ($val) {
    case "バナナ":
        echo "バナナを発見!<br>";

    case "イチゴ":
        echo "イチゴを発見!<br>";

    default:
        echo "バナナ、イチゴはなかった・・・<br>";
}

?>

実行結果:

「break;」が入っていないので、すべてのechoが実行されてしまいました。

ですので「break;」を入れるようにしましょう。

switch文で複数条件のやり方

最後に、switch文で複数条件のやり方について紹介します。

まずは、if文で複数条件のソースコードを見てみてください。

if文の場合

<?php

$val = "バナナ";

if ($val == "バナナ" || $val == "マンゴー") {
    echo "果物を発見!<br>";

} else if ($val == "トマト" || $val == "キャベツ") {
    echo "野菜を発見!<br>";

} else {
    echo "果物、野菜はなかった・・・<br>";
}

?>

上記では、果物か野菜か、それ以外かを判定するプログラムです。

$valに入っているのは「バナナ」で「バナナ or マンゴー」の条件に一致するので、「果物を発見!」が出力されます。

実行結果:

このif文の複数条件と同じ内容をswitch文で書いてみます。

case文をならべることで「バナナ or マンゴー」の判定をするようにしています。

switch文の場合

<?php

$val = "バナナ";

switch ($val) {

    // case文をならべることで「バナナ or マンゴー」の判定をしている
    case "バナナ":
    case "マンゴー":
        echo "果物を発見!<br>";
        break;

    case "トマト":
    case "キャベツ":
        echo "野菜を発見!<br>";
        break;
    
    default:
        echo "果物、野菜はなかった・・・<br>";
        break;
}

?>

このようにswitch文の複数条件はcase文をならべて判定をできます。

switch文の複数条件は可読性が良くてスッキリ書けるので使っている人は多いです。

if文でOR条件をたくさん使うときは、switch文で書いてみると良いと思います。

まとめ

PHPのswitch文について次の内容で解説しました。

  • switch文の書き方(1つの値、case文で分岐)
  • switch文とif文の違い(特に違いはない)
  • switch文の注意点(breakを入れる)
  • switch文で複数条件のやり方(case文をならべる、可読性が良い)

if文で書くよりも、switch文の方がスッキリと書けることも多々あります。

ですので、自分に合っている書き方を進みながら模索していきましょう!


プログラミングスクールをお探しの方へ

プログラミング学習を挫折せずに続けて成功できる人は

「目的目標を明確にすること」
「質問・相談できる環境を作ること」
「自己解決スキルを身に着けること」

この3つを大切にしてると思います。

ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。

  • テックキャンプ
    本気でIT業界に転職したい方におすすめです。
    転職できなかったら全額返金があります。
  • DMM WEBCAMP
    国から認定されているスクールです。
    やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。
  • TechAcademy
    1週間の無料体験があります。
    気軽にスクールを体験したい方向けです。