PHP

【PHP】switch文の使い方・書き方について

本記事では、PHPでswitch文の使い方・書き方について解説しています。

PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!

本書情報
出版社リックテレコム
著者谷藤 賢一
発売日2017/3/6
ページ数331ページ
レビュー
(Amazon)
(168件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

switch文の使い方・書き方

switch文は等価演算子を使用した条件分岐に特化した命令です。switch文の基本的な使い方は以下のとおりです。

<?php

switch (expression) {
    case 'value1':
        // expressionとvalue1が一致した時に実行させたい処理を記述
        break;
    case 'value2':
        // expressionとvalue2が一致した時に実行させたい処理を記述
        break;
    default:
        // 全てのcaseに一致しなかった時に実行させたい処理を記述
        break;
}
構文解説
  • expression:評価したい式(値)をセット
  • value1,value2:expressionにセットした式と照合に使用される。一致していればcase句のブロック内に記述された処理を実行する
  • break:case句のブロック内に記述された処理が終了することを意味する
  • default:全てのcaseに一致しなかった時にブロック内に記述された処理を実行する(省略可能)

実際に、switch文を使用したサンプルコードを用意したので、動作確認してみましょう。

<?php
$scoreRank = 'B';

switch ($scoreRank) {
    case 'A':
        echo 'とても良い調子です!';
        break;
    case 'B':
        echo 'あと少しです!';
        break;
    case 'C':
        echo '努力が必要です!';
        break;
    default:
        echo 'データがありません。';
        break;
}

// 実行結果:あと少しです!

評価したい式(値)に変数$scoreRankをセットします。変数の中はBが代入されているため、switch文はcase句にBがセットされているか上から順に探していきます。今回のサンプルコードでは「case ‘B’」があるので、そのcase句のブロック内に記述されている「echo ‘あと少しです!’」が実行されます。

break;を省略した記述方法

先ほど紹介したサンプルコードで、もし変数$scoreRankの値がBまたはCの場合は努力が必要です!の文字を表示させたいとなった時どうすればよいでしょうか?

<?php
$scoreRank = 'B';

switch ($scoreRank) {
    case 'A':
        echo 'とても良い調子です!';
        break;
    case 'B':
        echo '努力が必要です!';
        break;
    case 'C':
        echo '努力が必要です!';
        break;
    default:
        echo 'データがありません。';
        break;
}

// 実行結果:努力が必要です!

上記のような記述をしても間違いではありませんが、同じ処理を複数回記述するのはあまりよろしくはありません。そのような時はbreak;を記述せずcase句を連続して実行させるフォールスルーと呼ばれる小技を使用します。

<?php
$scoreRank = 'B';

switch ($scoreRank) {
    case 'A':
        echo 'とても良い調子です!';
        break;
    case 'B':
    case 'C':
        echo '努力が必要です!';
        break;
    default:
        echo 'データがありません。';
        break;
}

// 実行結果:努力が必要です!

上記のように記述をすることで、if文のOR条件のように変数$scoreRankの値がBまたはCの時に「努力が必要です!」と表示させることが出来ます。

フォールスルーは便利な小技ですが、コードの可読性を下げてしまうデメリットもあります。あまり乱用はしないようにしましょう。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村