0

isset()したがって、配列が設定されていない場合にスイッチがどのように動作するか、および/またはを使用する必要があるかどうかをよりよく理解しようとしています。default:

私が現在使用しているコードの例:

$parameters['sort'] = NULL;

if(isset($parameters['sort'])) {

    switch($parameters['sort'])
    {
        case 'relevance':
            $parameters['sort'] = 'rating';
        break;
        case 'published':
            $parameters['sort'] = 'updated';
        break;
        case 'views':
            $parameters['sort'] = 'viewCount';
        break;
    }

}

注:に正しいインデントがないことはわかってbreak;います (以下のようにする必要があります) switch()

注 2:コードを見直してバグを修正し、それを改善しながら、物事を適切に実装/使用する方法をよりよく理解しています。

    case 'relevance':
        $parameters['sort'] = 'rating';
        break;

だから私の質問は、余分なものを追加しdefaultて削除するか、問題が発生しなかったのでif()引き続き使用する必要があるかということです。if()両方を使用しても意味がありません。

    default:
        $parameters['sort'] = '';
    break;
4

3 に答える 3

1

defaultオプションは、以前のすべての比較を確認した後に選択されます。デフォルトが最も一般的な選択であり、コードが頻繁に実行される場合は、if 句に固執する必要があると思います。プロセッサ時間を節約するために自動最適化を信頼する必要はありません。

于 2012-08-23T13:12:15.083 に答える
1

さて、いずれの場合も値が見つからなかったらどうするかです。そうでない場合は、デフォルトのケースをスキップできますが、値が指定されていなくてもやるべきことがある場合は、デフォルトのケースを使用してください。
ただし、デフォルトのケースを使用することは良い習慣であり、少なくともエラー/未指定の使用法をログに記録するか、エラーを画面に出力することをお勧めします。

于 2012-08-23T13:13:02.767 に答える
0

これは個人的な好みですが、個人的には if ステートメントを削除し、デフォルトをスイッチに追加します。

この背後にある主な理由は、(if ステートメントを使用して) 今と同じように使用$parameters['sort']し、スイッチで定義した 3 以外の何かと等しい場合、問題が発生するためです。一方、デフォルトが定義されている場合、これらの場合、デフォルトにするものを常に認識します。

于 2012-08-23T13:11:32.517 に答える