在PHP中评估布尔变量:应该使用If / Else还是Switch?

时间:2010-08-27 15:40:04

标签: php boolean switch-statement if-statement

我喜欢让自己陷入这些荒谬的境地,在那里我过度评估我的编码习惯,所以在这里!

这个问题可能超越了PHP(以及理智)。在评估布尔变量时,哪一个是最佳实践? (假设三元组的//do stuff太多了)

if ($bool) {
    // do true stuff
} else {
    // do false stuff
}

switch ($bool) {
    case true:
        // do true stuff
        break;
    default:
        // do false stuff
        break;
}

我对性能和/或特殊注意事项感兴趣,而不是像“If / Else看起来更好”,“总是使用Switch”或“做你认为合适的事情”这样的一揽子陈述。

也就是说,除非确实没有差异。

2 个答案:

答案 0 :(得分:10)

使用if-else版本。它非常清晰易懂。

除非您要打开多个(> 2)值,否则不应该使用switch。在这种情况下,你不会使用开关获得任何东西(除了使你的代码不易理解)。

如果性能有任何差异,if-else版本会更快,但如果有任何差异,它实际上可以忽略不计。

如果有的话,这将是微观优化。不要这样做。在对代码引入任何“优化”之前,请对其进行概要分析并确定您的瓶颈。

答案 1 :(得分:0)

为了以防万一,您还应该检查您的变量是否真的是一个布尔值(而不是“”,0或null,它也可以评估为false)

if($bool === false) {
 // false stuff
} else if($bool === true) {
 // true stuff
} else {
 /// WTF???
}