3

次のような switch ステートメントがあるとします。

switch ($var)
{
    case 'A':
       $a = 1;
       break;

    case 'B':
       $a = 1;
       $b = 2;
       break;

    case 'C':
       $a = 1;
       $b = 2;
       $c = 3;
       break;
}

その switch ステートメントを繰り返して一度のように表示するよう$a = 1に構成する方法はありますか?$b = 2

4

4 に答える 4

9

case ステートメントの順序を元に戻し、break ステートメントを削除するだけです。

switch ($var)
{
    case 'C':
       $c = 3;
    case 'B':
       $b = 2;
    case 'A':
       $a = 1;
       break;
}

マニュアルから:

間違いを避けるために、switch ステートメントがどのように実行されるかを理解することが重要です。switch ステートメントは、1 行ずつ (実際には、ステートメントごとに) 実行されます。最初は、コードは実行されません。switch 式の値と一致する値を持つ case ステートメントが見つかった場合にのみ、PHP はステートメントの実行を開始します。PHP は、switch ブロックが終了するまで、または最初に break ステートメントを検出するまでステートメントを実行し続けます。ケースのステートメント リストの最後に break ステートメントを記述しない場合、PHP は次のケースのステートメントを実行し続けます。

于 2012-11-15T20:47:25.227 に答える
6

このような:

switch($var) {
    case 'C':
        $c = 3;
        // fallthrough
    case 'B':
        $b = 2;
        // fallthrough
    case 'A':
        $a = 1;
}

breakコメントはもちろんオプションですが、 a がないのは意図的なものであることを忘れないように、残しておきたいと思います。

于 2012-11-15T20:47:33.080 に答える
2
スイッチ ($var) {
  ケース「C」:
    $c = 3;
  ケース「B」:
    $b = 2;
  ケース「A」:
    $a = 1;
    壊す;
}

やりたいことをやればいい。

于 2012-11-15T20:48:17.267 に答える
2
switch($var) {
    case 'C':
        $c = 3;
    case 'B':
        $b = 2;
    case 'A':
        $a = 1;
}

ブレークを使用しないことで、たとえば $var に 'C' が含まれている場合、switch 構造全体が実行されます。$var が「B」の場合、スイッチは「B」のケースに入り、そこから実行されます。

于 2012-11-15T20:49:36.023 に答える