1

達成するためのより簡単な方法を探しています:

$switch_success = false;
switch ($var){
    case "a":
        // do some stuff
        $switch_success = true;
        break;
    case "b":
        // do some stuff
        $switch_success = true;
        break;
    case "c":
        // do some stuff
        $switch_success = true;
        break;
}
if ($switch_success){
    // switch was successful - run once only if switch finds a matching case
}

たぶん、またはdefaultのためだけのような別のケースキーワード:anyall

case "c":
    // do some stuff
    break;
all:
    // switch was successful - run once only if switch finds a matching case

または多分 ...

$switch_success = switch ($var){
    case "a":
    // do some stuff
    break;
    case "b":
    // do some stuff
    break;
    case "c":
    // do some stuff
    break;
}
if ($switch_success) //... 

それを無駄にしようとしただけで、私の意図を説明しようとしただけです。

4

7 に答える 7

4

$switch_success=1;上部とdefault: $switch_success=0;スイッチの最後で試してください。

于 2012-12-06T23:36:27.170 に答える
2

のようなものはどうですか...

$switch_success = true;
switch ($var)
{
    case "a":
        // do some stuff
        break;
    case "b":
        // do some stuff
        break;
    case "c":
        // do some stuff
        break;
    default:
        $switch_success = false;
}
if ($switch_success){
    // switch was successful - run once only if switch finds a matching case
}
于 2012-12-06T23:38:47.377 に答える
1

このcase句には、デフォルトでフォールスルーがあります。

switch ($var){
    case "a":
    case "b":
    case "c":
        // do some stuff
        break;
    default
        // do nothing
        break;
}

しかし、それぞれの場合にやるべきことがあり、それからすべてにやるべきことがあるなら、あなたの元の例は問題ありません。

于 2012-12-06T23:37:49.107 に答える
1

私があなたを正しく理解しているなら、あなたは、いずれかのケースが満たされた場合は$ successが真であり、そうでない場合は偽であることを望みますか?その場合は、$ success=true;を設定します。最初に、「デフォルト」のケースを$ success=falseにします。次に、$ success=trueと入力する必要はありません。たくさんの時間。

于 2012-12-06T23:38:28.420 に答える
1

多分これ?

$switch_success = true;
switch ($var){
    case "a":
        // do some stuff
        break;
    case "b":
        // do some stuff
        break;
    case "c":
        // do some stuff
        break;
    default:
        $switch_success = false;
        break;
}
if ($switch_success){
    // switch was successful - run once only if switch finds a matching case
}
于 2012-12-06T23:40:21.047 に答える
0

短いバージョンは考えられません

if ($var == 'a' || $var == 'b' || $var == 'c') // do some stuff;
于 2012-12-06T23:36:47.857 に答える
0

$switch_success次のように、個別に設定します。

$switch_success = in_array($var, array("a","b","c"));

switch ($var) {
    case "a":
        // do some stuff
        break;
    case "b":
        // do some stuff
        break;
    case "c":
        // do some stuff
        break;
}

if ($switch_success) {
    // switch was successful
}
于 2012-12-06T23:37:06.173 に答える