【问题标题】:PHP: switch vs if [duplicate]PHP:switch vs if [重复]
【发布时间】:2026-01-18 12:20:02
【问题描述】:

哪种形式更高效

这个:

switch($var) {
  case 1:

    break;
  case 2:

    break;
}

..或者这个:

if( $var === 1 ) {

} elseif( $var === 2 ) {

}

在性能方面?

【问题讨论】:

  • 基于性能的 switch case 更快
  • 你为什么不对其进行基准测试看看?
  • 让我这样表述。唯一应该有 switch 语句的情况是 if/elseif 块中有超过 1-2 个项目;否则使用 if/elseif 会更难阅读。
  • 我无法相信用户在 * 中的实际贡献速度有多快。这太棒了!

标签: php if-statement switch-statement


【解决方案1】:

性能方面完全无关紧要。

正如PHPBench 所示,即使有 1000 次操作,两者之间的差异也只有 188 微秒,即 188百万分之一秒。 PHP 代码通常有更大的瓶颈:单个数据库调用通常需要数十毫秒,甚至是数万倍。

使用您喜欢的任何一个,以及对您的代码的可读性更好的那个 - 对于许多检查,最有可能的是switch

【讨论】:

  • +1 证明!否则 -1 :)
【解决方案2】:

这种微观尺度的性能根本不重要。使用更适合您的上下文的那个。可读性和可维护性远比性能重要。

【讨论】:

  • 如果他正在写一个实时的php系统呢?
  • 让上帝保佑他吧。
【解决方案3】:

它不是关于性能,它更多关于需求!

有时你希望在你的 if 条件下发生一些事情,否则,它会去 else。

如果要比较很多值,可以使用 Switch

【讨论】:

  • 而且,最重要的是,在我看来,开关更具可读性
  • 是的,但是肯定要看需求,如果你有很多条件,那么如果,如果选择正常的数据那么肯定切换
  • @user2261839 它不仅仅是关于 php,if 和 switch 在所有语言中都一样