【问题标题】:PHP Nested Ifs vs Single If with Multiple Conditions [duplicate]PHP嵌套Ifs与具有多个条件的单个If [重复]
【发布时间】:2011-08-27 08:00:50
【问题描述】:

可能的重复:
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
  }
}

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

注意 - 我不关心 C# 或 Java 或任何其他语言的工作原理,除非有人可以证明他们处理的构造完全相同。

【问题讨论】:

  • 你在第二个 if 语句的末尾忘记了一个 ) ;)
  • @Marc B 和 webbiedave - 我看到了这两个并感觉到,因为 PHP 是在谈论如何解决特定问题以及为什么它不起作用(更不用说如此糟糕措辞甚至几乎不是一个有效的问题),第二个是谈论Java(并且由于Java!= PHP在效率和优化方面),它们不是有效的重复IMO。
  • @Ash - 我确实进行了搜索,但结果是空的。甚至 SO 基于标题和标签提供的建议列表也没有真正提供任何东西。

标签: php optimization if-statement


【解决方案1】:

只要您在每个块中执行相同的代码(正如您的 cmets 所指出的那样),那么它们都可以解决问题(不,实际上并没有太大的性能差异)。

但是,通常情况下,您不会以两种方式执行相同的代码,因此从逻辑上讲,在这种情况下,第一个块实际上与第二个块不同。这是一个例子:

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();
   }
}

所以你可以在上面的例子中看到第二个块实际上比第一个块效率

【讨论】:

  • 感谢您的解释。 :)
【解决方案2】:

【讨论】:

  • C# != PHP 在优化和语言如何处理不同结构方面。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 2017-09-28
    • 2017-11-08
    • 2020-02-25
    • 2016-12-13
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多