Могу ли я использовать логическое «или» в случае оператора переключения PHP? - PullRequest
2 голосов
/ 27 ноября 2009

Можно ли использовать «или» или «и» в корпусе переключателя? Вот что я ищу:

case 4 || 5:
    echo "Hilo";
    break;

Ответы [ 5 ]

12 голосов
/ 27 ноября 2009

Нет, но вы можете сделать это:

case 4:
case 5:
       echo "Hilo";
       break;

См. руководство по PHP .

РЕДАКТИРОВАТЬ: О случае И: переключатель проверяет только одну переменную, так что это не будет работать, в этом случае вы можете сделать это:

switch ($a) {
  case 4:
    if ($b == 5) {
      echo "Hilo";
    }
    break;
  // Other cases here
}
4 голосов
/ 27 ноября 2009

Как эффективно достичь этого:

CASE 4 :
CASE 5 :           
    echo "Hilo";           
    break;

Это называется оператором переключения с провалом. От Википедия :

"В языках C и аналогично сконструированных языках широко используется отсутствие ключевых слов break, приводящих к провалу выполнения программы из одного блока в другой. Например, если n = 2, четвертый оператор case приведет к совпадению в управляющую переменную. Следующая строка выводит «n - четное число». Выполнение продолжается в течение следующих 3 операторов case и переходит к следующей строке, которая выводит «n - простое число». Строка разрыва после этого вызывает переключить оператор на заключение. Если пользователь вводит более одной цифры, выполняется блок по умолчанию, который выдает сообщение об ошибке. "

3 голосов
/ 27 ноября 2009

вы можете просто сложить дела:

switch($something) {
   case 4:
   case 5:
       //do something
       break;
}
3 голосов
/ 27 ноября 2009

Нет, я считаю, что это будет оцениваться как (4 || 5), что всегда верно, но вы можете сказать:

case 4:
case 5:
    // do something
    break;
0 голосов
/ 30 ноября 2014
switch($a) {
    case 4 || 5:
        echo 'working';
        break;
}
...