web-dev-qa-db-ja.com

PHPでスイッチケース「または」を使用する方法は?

PHPスイッチで「OR」演算子または同等のものを使用する方法はありますか?たとえば、次のようなもの:

switch ($value) {

case 1 || 2:
echo 'the value is either 1 or 2';
break;

}
204
alex
switch ($value)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

これは、ケースブロックの「フォールスルー」と呼ばれます。この用語は、switchステートメントを実装するほとんどの言語に存在します。

464
nlaq

||switchと一緒に使用する必要がある場合は、次を試すことができます。

$v = 1;
switch (true) {
    case ($v == 1 || $v == 2):
        echo 'the value is either 1 or 2';
        break;
}

そうでなければ、あなたの好みの解決策は

switch($v) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}

問題は、大規模なケースを扱う場合、両方の方法が効率的ではないことです... 1から100を想像してください。

$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
    case in_array($v, $r1) :
        echo 'the value is in range 1 to 100';
        break;
    case in_array($v, $r2) :
        echo 'the value is in range 100 to 200';
        break;
}
126
Baba

他の回答はすべて正しいので再投稿しませんが、「複雑な」ステートメントに対してswitchを使用できないことを追加します。たとえば、値が「3よりも大きいかどうか」そのようなことをする必要がある場合は、ifステートメントの使用に固執するか、switchが特に強く必要な場合は、前から後ろに使用することができます。

switch (true) {
    case ($value > 3) :
        // value is greater than 3
    break;
    case ($value >= 4 && $value <= 6) :
        // value is between 4 and 6
    break;
}

しかし、私が言ったように、私は個人的にifステートメントを使用します。

53
nickf

この記事の次の例を試してください。 http://phpswitch.com/

考えられるスイッチケース:

(私)。 簡単なswitchステートメント

Switchステートメントは不思議で魔法です。これは、値のさまざまなオプションから選択し、設定されている値に応じて異なるコードを実行できるようにする言語の一部です。

考えられる各オプションは、switchステートメントのケースによって指定されます。

例:

switch($bar)
{
    case 4:
        echo "This is not the number you're looking for.\n";
        $foo = 92;
}

(ii)。 区切りコードブロック

スイッチの主な注意点は、ブレークで停止しない限り、各ケースが次のケースに進むことです。上記の単純なケースがケース5をカバーするように拡張されている場合:

例:

case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iii)。 複数のケースでフォールスルーを使用する

スイッチはブレークが見つかるまでコードを実行し続けるので、フォールスルーの概念を取り入れて複数のケースで同じコードを実行するのは簡単です。

例:

ケース2:

case 3:
case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iv)。 高度なスイッチング:条件ケース

PHPのスイッチでは、特定の変数の値を有効にするだけではありません。使用するケースの値を提供する限り、任意の式をケースの1つとして使用できます。例として、スイッチを使用して記述された簡単なバリデーターを次に示します。

例:

switch(true)
{
    case (strlen($foo) > 30):
        $error = "The value provided is too long.";
    $valid = false;
    break;

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
        $error = "The value must be alphanumeric.";
    $valid = false;
    break;

    default:
    $valid = true;
    break;
}

これは問題の解決に役立つと思います。

36
John Peter

試して

switch($value) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}
15
Craig

http://php.net/manual/en/control-structures.switch.php (手動)を実行することをお勧めします

switch ($your_variable)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

説明

単一のステートメントを実行する値のように、ブレークが見つかるまで、またはブレークが見つからない限りコードを実行し、ブレークが見つかった場合はスイッチケースから出てくるように、ブレークなしでそれを置くことができます。

9
switch ($value) 
{
   case 1:
   case 2:
      echo 'the value is either 1 or 2';
   break;
}
1
Tapas Pal

このコードを使用してください:

switch($a) {
case 1:
case 2:
    .......
    .......
    .......
    break;
}

ブロックは1と2の両方を呼び出しました。

1
RaJeSh