PHP嵌套Ifs与Single如果有多个条件

时间:2011-05-17 15:03:49

标签: php optimization if-statement

  

可能重复:
  php multiple if conditions
  What is better ? Multiple if statements, or one if with multiple conditions

所以我正在研究一段代码,其中我最终使用了两种不同风格的if语句。这让我感到疑惑 - 哪一个更有效在PHP ?尽管存在一般差异(如果存在),是否有时候一个人可能比另一个人好?是否有一定程度的复杂性,其中的好处变得清晰(如果接近)或接近(如果最初清楚)?另外,除了美学或主观差异之外,一种方法还有其他好处吗?

if ($value == 'someval') {
  if($otherval == 'someval') {
    // do stuff
  } else if ($otherval == 'otherval') {
    // do same stuff
  }
}

VS

if (($value == 'someval') && ($otherval == 'someval' || $thirdval == 'someval') {
  // do stuff
}

注意 - 我不关心什么适用于C#或Java或其他任何语言,除非有人能证明他们处理的结构完全相同。

3 个答案:

答案 0 :(得分:3)

只要你在每个块中执行相同的代码(正如你在评论中指出的那样),那么他们都会做到这一点(不,不会有很多性能差异)。

但是,通常情况并非如此,您不会双向执行相同的代码,因此逻辑上第一个块实际上与第二个块不同。这是一个例子:

if($value == 'someval') {
   if($otherval == 'someval') {
     doSomething();
   }
   else if ($otherval == 'otherval') {
     doSomethingElse();
   }
}

if(($value == 'someval') && ($otherval == 'someval' || $otherval == 'otherval')) {
   //we now still need to evaluate $otherval in order to determine which func to execute...
   //this adds bloat...
   if($otherval == 'someval') {
     doSomething();
   }
   else if ($otherval == 'otherval') {
     doSomethingElse();
   }
}

因此,正如您在上面的案例中所看到的,第二个块实际上 效率高于第一个块。

答案 1 :(得分:2)

没有真正的区别,你应该使用哪个更具可读性。

答案 2 :(得分:0)