PHP switch 语句在多种情况下具有相同的值

tol*_*org 3 php switch-statement

与使用多个 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;
}
Run Code Online (Sandbox Code Playgroud)

我希望我的例子表明我打算做什么......

dec*_*eze 5

不,它不能。第一个case匹配的内容以及它后面直到第一个break语句或语句末尾的所有内容都switch将被执行。如果您这样做break,则您将退出该switch语句并且无法重新输入该语句。你能做的最好的事情是:

switch ($fruit) {
    case 'apple':
    case 'orange':
        ...

        switch ($fruit) {
            case 'apple':
                ...
            case 'orange':
                ...
        }
}
Run Code Online (Sandbox Code Playgroud)

但实际上,不要。如果您需要在个人之前对这两个人执行一些特殊操作,请在 之前switch执行。或者从一开始就重新考虑整个程序逻辑和结构。if (in_array($fruit, ['apple', 'orange'])) ...switch