PHP에서 스위치 케이스 '또는'을 사용하는 방법


230

PHP 스위치에서 'OR'연산자 또는 이와 동등한 것을 사용하는 방법이 있습니까?

예를 들면 다음과 같습니다.

switch ($value) {

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

답변:


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

이를 사례 블록 "통과"라고합니다. 이 용어는 switch 문을 구현하는 대부분의 언어에 존재합니다.


135

||함께 사용해야한다면 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;
}

문제는 상상 ... 큰 경우를 처리 할 때 두 방법이 효율적으로되지 않는 것입니다 1100이 완벽하게 작동합니다

$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;
}

58

다른 답변은 모두 정확하기 때문에 다시 게시하지는 않지만 더 복잡한 "문"에는 스위치를 사용할 수 없습니다 (예 : 값이 "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성명서를 사용합니다 .


1
이 경우 if () over switch ()를 추천 해 주셔서 감사합니다. 이러한 종류의 스위치는 IMO라는 복잡성을 추가합니다.
moo

1
예,이 스타일을 선택하려면 상당히 설득력있는 이유가 있어야하지만 가능하다는 것을 아는 것이 좋습니다.
nickf

2
실제로 이것을 알게되어 기쁩니다. 나는 기본-Y 언어로 프로젝트를 빌드 할 때마다, 나는 C 스타일을 가진 그리워 switch()하고 내가 정말 필요 미스 C 틱 언어로 작업하고있을 때 Select Case정말 말하는 속기 방법이다, "큰이있다 if, else if, else-if ... here "블록.
Stan Rogers

5
you can't use switch for more "complicated" statements그것은이다 can't또는이다 shouldn't? 귀하의 예에서can
Sharky

@Sharky는 스위치의 일반적인 사용 사례가 불가능하다는 것을 의미했습니다. 이런 종류의 switch (true)것은 스위치의 일반적인 사용 사례가 아닙니다.
Chen Li Yong

37

이 기사에서 다음 예제를 사용해보십시오 : http://phpswitch.com/

가능한 스위치 케이스 :

(나는). 간단한 스위치 설명

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의 스위치는 단지 특정 변수의 값을 켜는 것을 허용하지 않습니다 : 당신이 사용할 값을 제공하는 한, 어떤 표현도 케이스 중 하나로 사용할 수 있습니다. 예를 들어, 다음은 switch를 사용하여 작성된 간단한 유효성 검사기입니다.

예 :

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;
}

이것이 문제를 해결하는 데 도움이 될 수 있다고 생각합니다.


실례에 대한 실제 사용 사례가 있습니까 (iv)?
Pedro Moreira

15

시험

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

9

나는 당신이 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;
}

설명

단일 명령문을 실행하는 값과 마찬가지로 중단이 발견 될 때까지 또는 중단되지 않는 것처럼 중단없이 코드를 실행할 수 있으며 중단이 발견되면 스위치 케이스에서 나옵니다.


1

이 코드를 사용하십시오 :

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

블록은 1과 2를 모두 요구했습니다.


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


-4

다른 방법으로 요청하는 것이 가장 좋습니다. 또한 사용하기가 더 쉽고 명확 할 수 있습니다.

예:

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

PHP에서 잘 작동하지 않는 기능을 사용하는 대신, 특히 HTML에 PHP가있을 때.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.