与使用多个 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;
}
我希望我的例子能说明我打算做什么...
最佳答案
不,它不能。第一个匹配的 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
之前。或者重新考虑您的整个程序逻辑和结构。
关于在多种情况下具有相同值的 PHP switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806218/