switch语句,包含多个执行相同代码的情况

时间:2016-01-08 16:03:12

标签: php switch-statement case

我有以下代码:

<?php

echo check('three');

function check($string) {
  switch($string) {
    case 'one' || 'two' : return 'one or two'; break;
    case 'three' || 'four' : return 'three or four'; break;
  }
}

目前输出:

one or two

但显然我希望代码返回three or four

那么为多个case语句返回相同代码的正确方法是什么?

3 个答案:

答案 0 :(得分:5)

只需编写两个执行相同代码的case语句,例如

function check($string) {
  switch($string) {
    case 'one':
    case 'two':
        return 'one or two';
    break;

    case 'three':
    case 'four' :
        return 'three or four';
    break;
  }
}

答案 1 :(得分:4)

不可能。 case项必须为 VALUES 。你有表达式,这意味着要计算表达式,并将表达式的结果与switch()中的值进行比较。这意味着你已经有效地获得了

switch(...) { 
  case TRUE: ...
  case TRUE: ...
}

您不能在案例中使用多个值。但是,你可以使用“全面支持”:

switch(...) {
   case 'one':
   case 'two':
       return 'one or two';
   case 'three':
   case 'four':
       return 'three or four';
 }

答案 2 :(得分:1)

如何使用映射字典:

$oneOrTwo = 'one or two';
$threeOrFour = 'three or four';
$stringsMap = ['one' => $oneOrTwo, 'two' => $oneOrTwo, 'three' => $threeOrFour, 'four' => $threeOrFour];
return $stringsMap[$string]

如果添加越来越多的值,切换语句会变得越来越难以维护。