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