我想在一个交换机案例中传递多个值。我意识到我不可能这样做。还有另一种方法,没有将每个案例放在网上吗?
switch(get_option('my_template'))
{
case 'test1', 'test2':
return 850;
break;
default:
return 950;
}
答案 0 :(得分:26)
switch(get_option('my_template')) {
case 'test1':
case 'test2':
return 850;
break;
default:
return 950;
}
答案 1 :(得分:2)
除非您在案件中使用break;
,否则执行将属于下一个案例。您可以通过将每个案例堆叠在一起来利用这一点,例如:
switch(get_option('my_template')) {
case 'test1':
case 'test2':
return 850;
break;
default:
return 950;
}
因为“test1”情况下没有break;
,当执行结束于该情况时(即立即,因为其中没有逻辑),控制将落入'test2'的情况,将以break
声明结束。
在这种情况下,这些情况甚至不需要break
,因为return
语句会自行解决switch
。
答案 2 :(得分:2)
在开关结构中,我不相信有任何方法可以在一条线上做“或”。这将是最简单的方法:
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;
答案 3 :(得分:1)
我认为这是尽可能接近的。
switch(get_option('my_template'))
{
case 'test1':
case 'test2':
return 850;
break;
default:
return 950;
}
编辑纠正。
答案 4 :(得分:1)
这个怎么样
switch(get_option('my_template'))
{
case 'test1':
case 'test2':
return 850;
break;
default:
return 950;
}