1

私は PHP の switch にあまり詳しくありませんが、コードに多数の elseif がある場合は、代わりに switch を使用した方がよいと聞きました。以下のコードを switch に変更しようとしましたが、elseif ごとに 2 つまたは 3 つの値をチェックしているため、switch の代わりに elseif を使用する方が論理的であるように思われます (間違っている可能性があります)。

私の質問は、以下のコードについて何を提案しますか? Elseifまたはスイッチ?

また、コードを switch に変更したい場合は、ヒントを教えていただけますか?

よろしくお願いします!

(ちなみに、block_check と report_check はチェックボックスで、reported_msg はテキストです)

public function block_user(){
    if(isset($_POST['submitted'])){

        $block_check = $_POST['block_check'];
        $report_check = $_POST['report_check'];     
        $reported_msg = $_POST['reported_msg']);

        if((!($block_check)) && (!($report_check))){
            echo "dont send, both not checked";

        }elseif(($report_check) && ($reported_msg == '')){
            echo "dont send, msg box is empty";

        }elseif((!($report_check)) && ($reported_msg != '')){
            echo "dont send, report_check is not checked";

        }elseif(($block_check) && (!($report_check)) && ($reported_msg == '')){
            echo "just process block";

        }elseif((!($block_check)) && ($report_check) && ($reported_msg != '')){
            echo "just process report";

        }elseif(($block_check) && ($report_check) && ($reported_msg != '')){
            echo "process both block and report";
        }
    }
}
4

3 に答える 3

4

スイッチは状況によっては非常に優れていますが、他の状況では非常に悪いです。あなたの特定の状況では、if/elseif 条件を使用します。

switch条件がシンプルで表現がシンプルな時に使います。条件に複数の変数があり、式が約 3 行より長い場合は、スイッチを使用しません。

良いスイッチの良い例を次に示します。

switch ( $type ) {
    case 'banana': 
        $valid = true;
        $price = 1;
        break;
     case 'apple': 
        $valid = false;
        $price = 2.52;
        break;
}
于 2012-06-27T02:06:44.313 に答える
2

正直なところ、ほとんどの場合、読みやすさと味についてです。条件がより複雑になった場合により柔軟に対応できるので、elseif ステートメントを好みます。

于 2012-06-27T02:28:12.833 に答える
1

コードを最適化するには、最も頻繁に使用されるifステートメントをステートメント ブロックの先頭に配置しelseifます。それ以外の場合、唯一の違いはコードの読みやすさです。これは、実際にswitchステートメントを使用する大きな理由です。

于 2012-06-27T02:06:02.097 に答える