重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

初歩的な話かと思われますが、以下のような例文があるとします。

switch ( $val ) {
case 0:
~処理A~
case 1:
~処理A~
case 2:
~処理A~
case 3:
~処理A~
case 4:
~処理B~
case 5:
~処理B~
}

仮に、「~処理A~」部分の記述内容が全て同じだとします。
今まで、素人なわたしは「~処理~」部分を「shoriA.php」などに書き出して、
「~処理A~」部分に「require_once( "shoriA.php" );」と書いてきました。

これを、1つのPHPファイル内で完結した書き方をするとしたら、
どう書くとスマートな書き方になりますか?
functionなどを使うのでしょうか。

A 回答 (2件)

switch ( $val ) {


case 0:
case 1:
case 2:
case 3:
~処理A~
case 4:
case 5:
~処理B~
}

このタイプの分岐には、言語によって、ラベル(PHPではcase)を飛び越えて処理する「フォールスルー」と呼ばれるものと、次のラベルに達した時点で終了するものとがあります。
PHP はフォールスルーなので、上のような書き方ができます。

breakを書く、というのをお約束のようにやっているかと思いますが、そこで終了させることで別のcase以下を実行しないようにするためのものです。breakをわざと書かないことによって、複数のcaseに対応させることが可能です。

まあ、この方法を使ったとしても、処理が長ければfunction等で別に書くのがよいです。
    • good
    • 0
この回答へのお礼

kmeeさん、ご回答ありがとうございました。

No1さんのお礼にも書きましたが、こんな書き方ができるとは思いませんでした。

breakを書く、というのをお約束も思い込みでしたね。
「フォールスルー」という言葉も覚えておきます。

大変勉強になりました。ありがとうございました。

お礼日時:2011/08/28 20:42

全く同じ処理だけなら、



switch ( $val ) {
case 0:
case 1:
case 2:
case 3:
~処理A~
break;
case 4:
case 5:
~処理B~
break;
}

処理の一部が共通と言うだけなら、その部分だけをfunctionにします。
    • good
    • 0
この回答へのお礼

notnotさん、早速ご回答ありがとうございました。

こんな書き方ができるとは思いませんでした。
効率よいですね。

大変勉強になりました。ありがとうございました。

お礼日時:2011/08/28 20:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!