Php 我应该使用elseif还是多个if子句

Php 我应该使用elseif还是多个if子句,php,Php,我有一个简单的if代码: 使用esleif还是使用两个独立的ifs,哪个更好 if(is_home() && $currentpage == ''){ $catname = 'cars'; } elseif(is_home() && $currentpage != '' && is_page_template('models.php')){ $catname = 'newcars'; } 两个独立的if条款: if(is_h

我有一个简单的if代码:

使用esleif还是使用两个独立的ifs,哪个更好

if(is_home() && $currentpage == ''){ 
    $catname = 'cars';
} elseif(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars';
} 
两个独立的if条款:

if(is_home() && $currentpage == ''){ 
    $catname = 'cars';
} 
if(is_home() && $currentpage != '' && is_page_template('models.php')){ 
    $catname = 'newcars';
} 
if的顺序重要吗?我能把第二个if放在第一个if之前吗? 问题应该是php如何处理从更特殊到更一般的条件? 你们是否应该总是从更具体的开始,然后逐步发展到一般的? 或者php可以对它们进行排序


第二个版本对我来说更容易,因为我已经分配了if:)

这取决于你想要什么样的行为:

如果使用
elseif
仅执行第一个匹配块

$foo = $bar = true;
if($foo) { /* executed */ }
elseif($bar) { /* not executed */ }
使用单独的
if
子句时,将执行所有匹配块:

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

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

这取决于您想要的行为:

if (is_home()) { 

    if ($currentpage == '') {

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

        $catname = 'newcars';
    }       
}
如果使用
elseif
仅执行第一个匹配块

$foo = $bar = true;
if($foo) { /* executed */ }
elseif($bar) { /* not executed */ }
使用单独的
if
子句时,将执行所有匹配块:

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

如果条件是不同的,即只有一个是真的,这并不重要。但是,通过使用
elseif
可以避免无用的检查,因为一旦一个条件的计算结果为true,就不需要再检查其他条件。

为了优化脚本,我建议使用elseif,以避免运行额外的不必要条件

if (is_home()) { 

    if ($currentpage == '') {

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

        $catname = 'newcars';
    }       
}
如果可能,我建议使用switch/case语句(您可以在其中检查单个变量的值)。从减少混乱的角度来看,它们更干净,更易于维护


多个if语句(而不是elseif语句)的一个问题是,它使调试问题更加复杂。您如何知道第二条语句没有覆盖第一条语句,或者您的条件逻辑对每条语句都是正确的?使用多个ifs会增加一个条件重写另一个条件函数的可能性。开始在这些if语句中添加多个变量,这将开始伤害你的大脑。

为了优化脚本,我建议使用elseifs,以避免运行额外的不必要条件

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

多个if语句(而不是elseif语句)的一个问题是,它使调试问题更加复杂。您如何知道第二条语句没有覆盖第一条语句,或者您的条件逻辑对每条语句都是正确的?使用多个ifs会增加一个条件重写另一个条件函数的可能性。开始在这些if语句中添加多个变量,它会开始伤害你的大脑。

我同意

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

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

Else if是互斥的if语句。多个if不是。否则if是互斥的if语句。多个如果不是。这就是我想知道的,所以如果第一个是一个特定的查询,第二个更一般,如果我使用两个如果,一般的一个可以覆盖我想知道的更特殊的一个,所以如果第一个是一个特定的查询,第二个更一般,如果我使用两个ifs,那么一般的ifs会覆盖更特殊的ifs,我认为这很难看,因为它添加了更多的嵌套代码。它根本没有回答这个问题。我认为它很难看,因为它添加了更多的嵌套代码。它根本没有回答这个问题。