【问题标题】:Multiple foreach vs multiple if inside foreach多个 foreach 与多个 if 在 foreach 内
【发布时间】:2012-05-11 20:13:34
【问题描述】:

两者中哪个更优? I can't test it on my computer, I can't rely on it.

foreach($links as $link){
    if($a){
        //do something
    }
    if($b){
        //do something
    }
    if($c){
        //do something
    }
    if($d){
        //do something
    }
}

if($a){
    foreach($links as $link){
        //do something
    }
}
if($b){
    foreach($links as $link){
        //do something
    }
}
if($c){
    foreach($links as $link){
        //do something
    }
}
if($d){
    foreach($links as $link){
        //do something
    }
}

【问题讨论】:

    标签: php if-statement foreach control-structure


    【解决方案1】:

    1 个循环总是优于(可能)4 个。

    【讨论】:

      【解决方案2】:

      这两个sn-ps代码做的事情不一样,因此你应该使用正确的那个,而不是仅仅根据速度来选择。

      要看到这一点,请考虑如果$a, $b 等多个之一为真,会发生什么情况。这两个 sn-ps 都会执行很多 do somethings,但顺序不同。

      如果do somethings 可能会改变$a, $b 的值等,还要考虑差异。

      【讨论】:

        【解决方案3】:

        如果条件非常相似,则使用switch() 语句可能更易于阅读,或者如果$a、$b、$c 和$d 互斥,则使用elseif

        【讨论】:

          【解决方案4】:

          这取决于每个条件为真的可能性,以及您循环通过的集合的长度。 IF 条件的开销很小,但会在一个大型集合上加起来,而 foreach 迭代器的开销稍高,但如果其中一些条件很少为真,则可以将其最小化

          【讨论】:

            【解决方案5】:

            我认为第一个更好。假设$a === true$b === true。在第一个示例中,只会执行一个循环,但在第二个示例中,相同的循环将执行两次。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-02-11
              • 1970-01-01
              • 2012-07-28
              • 2021-04-16
              • 2015-09-15
              • 2021-12-13
              • 1970-01-01
              • 2011-01-05
              相关资源
              最近更新 更多