哪个更快更好,切换案例还是其他原因?

哪个是更好,最快的方法:如果或切换?

if(x==1){
  echo "hi";
} else if (x==2){
  echo "bye";
}

switch(x){
  case 1
    ...
  break;
  default;
} 

答案 1

你的第一个例子是完全错误的。您需要的不仅仅是.elseifelse

如果您使用或主要是偏好问题。性能是一样的。if..elseif...switch

但是,如果您的所有条件都属于在每个条件下都相同的类型,则通常是有道理的。我也只会在超过两个条件的情况下使用。x == valuexswitchswitch

实际为您提供性能优势的一种情况是,如果变量部分是函数调用:switch

switch(some_func()) {
    case 1: ... break;
    case 2: ... break;
}

则只调用一次,而some_func()

if(some_func() == 1) {}
elseif(some_func() == 2) {}

它将被调用两次 - 包括函数调用发生两次的可能副作用。但是,您可以随时使用,然后在您的条件下使用 - 因此您可以完全避免此问题。$res = some_func();$resif

您根本无法使用switch的情况是当您有更复杂的条件时 - 仅适用于常量值。switchx == yy


答案 2

根据 phpbench.com,if/elseif稍微快一些,特别是在使用严格比较(===)时。

enter image description here

但是,只有当你想在一个将被调用数千次的函数上削减微秒时,这才真正重要。


推荐