Switch语句>可以在一个case中包含多个case匹配


Switch statement > possible to include multiple case matches in a single case?

我想在一个开关情况下传递多个值。我意识到这是不可能的,因为我正在努力做到这一点。除了把每个案子都放到网上,还有别的办法吗?

switch(get_option('my_template'))
{
case 'test1', 'test2':
return 850;
break;
default:
return 950;
}
switch(get_option('my_template')) {
    case 'test1':
    case 'test2':
        return 850;
        break;    
    default:
        return 950;
}

在switch结构中,我不相信有任何方法可以在一行上做类似'or'的事情。这是最简单的方法:

switch(get_option('my_template')) 
{ 
   case 'test1':
   case 'test2': 
     return 850; break;  
   default:
     return 950; 
} 

但是,特别是如果你只是返回一个值而不执行代码,我建议这样做:

$switchTable = array('test1' => 850, 'test2' => 850);
$get_opt = get_option('my_template');
if in_array($get_opt, $switchTable)
    return $switchTable[$get_opt];
else return 950;

除非在您的案例中使用break;,否则执行只属于下一个案例。你可以利用这一点,把你的箱子叠在一起,例如:

switch(get_option('my_template')) {
  case 'test1':
  case 'test2':
    return 850;
    break; 
  default:
    return 950;
}

因为在'test1'情况下没有break;,当执行在该情况下结束时(即立即,因为其中没有逻辑),控制将会落到'test2'情况,它将在其break语句结束。

在这种情况下,break甚至不需要在这些情况下,因为return语句将自行处理脱离switch

我认为这是你能得到的最接近的了。

switch(get_option('my_template'))
{
    case 'test1':
    case 'test2':
    return 850;
    break;
    default:
    return 950;
}

修改后

这个怎么样

switch(get_option('my_template'))
{
    case 'test1':
    case 'test2':
        return 850;
        break;
    default:
        return 950;
}