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

标签 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;
}

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

最佳答案

不,它不能。第一个匹配的 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/

相关文章:

c++ While循环终止与功能

java - default case 必须包含在 Java 的 switch 语句中吗

php - 使用 PHP 和 Mysql 查找每种数据组合(不常见的一种)的统计数据

php - 如何在 MongoDB 中处理低于 1970 的日期

javascript - Preg 替换已弃用,正在尝试修复

php - 为什么代码覆盖率报告在 php 7.2 上失败?

php - 通过 PHP 保存 base64 编码图像以供 facebook 共享

bash - 切换案例与 fallthrough?

javascript - 是否可以在数组中使用 x ?

java - 简化 Java IF-ELSE