与使用多个if else相比,我更喜欢switch语句的结构。 但有时我想使用switch语句并在多种情况下具有相同的值。这可以以某种方式完成吗?
switch($fruit) {
case 'apple':
case 'orange':
// do something for both apples and oranges
break;
case: 'apple':
// do something for only apples
break;
case: 'orange':
// do something for only oranges
break;
}
我希望我的例子能说明我打算做什么......
答案 0 :(得分:4)
不,它不能。匹配的第一个case
及其后的所有内容将执行,直到第一个break
语句或switch
语句的结尾。如果您break
,则会突破switch
语句,无法重新输入。你能做的最好的是:
switch ($fruit) {
case 'apple':
case 'orange':
...
switch ($fruit) {
case 'apple':
...
case 'orange':
...
}
}
但实际上,不要。如果您需要在个人switch
之前对这两个人采取特殊措施,请在if (in_array($fruit, ['apple', 'orange'])) ...
之前执行switch
。或者重新考虑整个程序的逻辑和结构。
答案 1 :(得分:2)
创建一些函数,并按照以下方式执行:
switch($fruit) {
case: 'apple':
apple_and_orange_function();
apple_function();
break;
case: 'orange':
apple_and_orange_function();
orange_function();
break;
}
答案 2 :(得分:0)
你不能多次匹配,但你可以写下这样的级联:
switch($fruit) {
case 'apple':
// do something for only apples
case 'orange':
// do something for both apples and oranges
break;
case: 'grapefruit':
// do something for only grapefruits
break;
}
您想要的只能通过if-else或deceze的解决方案执行