我应该使用ELSEIF或多个if引导的从句

问题描述:

我有这个简单,如果代码:我应该使用ELSEIF或多个if引导的从句

哪个更好,与esleif做或做两个独立的IFS?

if(is_home() && $currentpage == ''){ 
    $catname = 'cars'; 
} elseif(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars'; 
} 

两个separete if引导的从句:

if(is_home() && $currentpage == ''){ 
    $catname = 'cars'; 
} 
if(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars'; 
} 

请问的订单,如果事项?如果在第一次之前我能放置第二个吗? 这个问题应该是PHP如何将条件从更具体到更一般的对待? 你应该总是从更具体的开始,一直工作到一般? 或PHP可以排序他们?

,因为我已经配发,如果的:)

+7

否则IFS是if语句相互排斥的。多个if不是。 – 2012-08-07 23:18:16

这取决于你想要什么样的行为的第二个版本会为我简单:

如果使用elseif只有第一匹配块将被执行。

$foo = $bar = true; 
if($foo) { /* executed */ } 
elseif($bar) { /* not executed */ } 

当使用单独的if列有:,所有匹配块将执行:

$foo = $bar = true; 
if($foo) { /* executed */ } 
if($bar) { /* also executed */ } 

如果条件是不同的,即只有一个是有史以来真的,那并不重要。但是,通过使用elseif,您可以避免无用的检查,因为只要一个条件评估为true,就不需要检查其他条件。

+0

这就是我想知道的,所以如果第一个是一个特定的查询,第二个是更一般的,如果我使用两个ifs,那么一般可以覆盖更具体的一个 – webmasters 2012-08-07 23:20:13

+0

好的例子!简单但非常丰富的 – 2012-08-07 23:41:26

if (is_home()) { 

    if ($currentpage == '') { 

     $catname = 'cars'; 
    } 
    else if (is_page_template('models.php')) { 

     $catname = 'newcars'; 
    }  
} 
+0

这将如何帮助OP? – 2012-08-07 23:21:10

+2

我喜欢这种方式,为代码带来更多逻辑 – webmasters 2012-08-07 23:21:39

+0

我认为它很丑,因为它增加了更多的嵌套代码。它根本不回答这个问题。 – Jocelyn 2012-08-07 23:42:53

为了脚本优化,我会推荐elseifs,以避免运行多余的不必要的条件。

如果可能的话,我会建议使用switch/case语句(在这里你可以检查单个变量的值)。从减少混乱的角度来看,它们更干净,更容易维护。多

一个问题if语句(而不是ELSEIF语句)是它使调试问题更加复杂。你怎么知道第二个陈述不是凌驾于第一个陈述上,或者你的条件逻辑对每一个陈述都是正确的?使用多个if增加了一个条件覆盖另一个的功能的可能性。开始在这些if语句中添加多个变量,它会开始伤害你的大脑。

我会去的,

if(is_home()) { 
    if($currentpage == '') { 
     $catname = 'cars'; 
    } 
    elseif(is_page_template('models.php')) { 
     $catname = 'newcars'; 
    } 
}