254

PHPスイッチで「OR」演算子または同等のものを使用する方法はありますか?

たとえば、次のようなものです。

switch ($value) {

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

12 に答える 12

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

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

于 2008-10-16T00:26:55.370 に答える
146

||で使用する必要がある場合は、次の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;
}
于 2012-11-29T20:31:35.587 に答える
58

他の回答はすべて正しいので再投稿しませんが、「複雑な」ステートメントには 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そこでステートメントを個人的に使用します。

于 2008-10-16T01:55:55.657 に答える
39

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

可能なスイッチケース:

(私)。シンプルな switch ステートメント

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

可能な各オプションは、switch ステートメントのケースによって指定されます。

例 :

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

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

switch の主な注意点は、break で停止しない限り、各ケースが次のケースに続くことです。上記の単純なケースを拡張してケース 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;

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

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

例 :

ケース 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;
}

これはあなたの問題を解決するのに役立つと思います。

于 2012-12-06T06:17:15.277 に答える
15

試す

switch($value) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}
于 2008-10-16T00:27:41.483 に答える
10

スイッチ(手動)を使用することをお勧めします。

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

説明

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

于 2012-12-05T14:51:36.780 に答える
1

このコードを使用します:

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

ブロックは1と2の両方に対して呼び出されます。

于 2012-12-03T10:17:14.580 に答える
0
switch ($value) 
{
   case 1:
   case 2:
      echo 'the value is either 1 or 2';
   break;
}
于 2012-12-05T06:46:39.750 に答える
-4

最善の方法は、他の場合はリクエストすることです。また、これは使用するのがより簡単で明確です。

例:

<?php 
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>

特に HTML で PHP を使用している場合は、PHP ではうまく機能しない関数を使用する代わりに。

于 2011-06-11T01:14:48.553 に答える