嵌套,如果条件有利于性能?

时间:2011-12-21 07:13:19

标签: php if-statement

我使用相同的php页面进行不同的操作。所以条件明智,我正在做一些行动

哪一个表现出良好的表现?

This one
    if($catid){ .. some action }

    if($sub_catid){ .. some action }

    if($sub_sub_catid){ .. some action }

或者这个


    if($catid){ 
        .. some action 
    }else{    
        if($sub_catid){ 
            .. some action 
        }else{    
            if($sub_sub_catid){
                .. some action
            }
        }
    }

3 个答案:

答案 0 :(得分:4)

首先,这两个有着截然不同的含义。如果所有这些变量都为TRUE,则第一个语句可以允许执行每个语句。第二个会在第一次找到正确的东西时“短路”。

我认为您正在寻找的是:

if($catid) { 
    .. some action 
} else if($sub_catid) { 
    .. some action 
} else if($sub_sub_catid) {
    .. some action
}

奖励积分:更具可读性!

答案 1 :(得分:1)

两者都有不错的表现。如果检查一个简单的变量非常快。理论上第二个更快,但你几乎无法衡量差异。

然而,从语义上讲,它们并不相同。如果同时设置了$ catid和$ subcatid,则在第一种情况下,第一个和第二个动作都会被执行,而在第二个情况下,只执行第一个动作。

所以要小心这样的“优化”。您可以使代码的速度提高一纳秒,但可能性较差,甚至可能会破坏!

答案 2 :(得分:-1)

如果你的条件不能同时成立 最好的方法是使用switch语句

switch($mycondition){

case 'category':
//Category statement here
break;

case 'sub_category':
//Another Statement here
break;

default:
//Other  cases

}