我有这个简单的代码:
哪个更好,用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可以对它们进行排序?
第二个版本对我来说会更容易,因为我有大量的if:)
答案 0 :(得分:5)
这取决于您想要的行为:
如果您使用elseif
,仅,则会执行第一个匹配的块。
$foo = $bar = true;
if($foo) { /* executed */ }
elseif($bar) { /* not executed */ }
当使用单独的if
子句时,所有匹配的块都将执行:
$foo = $bar = true;
if($foo) { /* executed */ }
if($bar) { /* also executed */ }
如果条件不同,即只有一个条件是真的,那并不重要。但是,通过使用elseif
,您可以避免无用的检查,因为只要一个条件评估为真,就不需要检查其他条件。
答案 1 :(得分:3)
为了脚本优化,我建议使用elseifs以避免运行额外的不必要的条件。
如果可能,我建议使用switch / case语句(您可以在其中检查单个变量的值)。从减少杂乱的角度来看,它们更清洁,更容易维护。
多个if语句(而不是elseif语句)的一个问题是它使调试问题更加复杂。你怎么知道第二个语句没有覆盖第一个语句,或者你的条件逻辑对于每个语句都是正确的?使用多个ifs会增加一个条件覆盖另一个条件的功能的可能性。开始在这些if语句中添加多个变量,它们将开始伤害你的大脑。
答案 2 :(得分:1)
if (is_home()) {
if ($currentpage == '') {
$catname = 'cars';
}
else if (is_page_template('models.php')) {
$catname = 'newcars';
}
}
答案 3 :(得分:1)
我会去,
if(is_home()) {
if($currentpage == '') {
$catname = 'cars';
}
elseif(is_page_template('models.php')) {
$catname = 'newcars';
}
}