Php 多条件语句

Php 多条件语句,php,conditional-operator,Php,Conditional Operator,用PHP写这篇文章的最好方法是什么,这样我就知道哪种情况会失败,并且很容易维护?无需使用多个if-else语句 if ((!$titleBlockPresent || !$leadBlock || ($allDoubleBlockCount !=2 || $allDoubleBlockCount!=1) ||$countFirstSmallShowBlocks !=2 ||$countSecondSmallShowBlocks !=2 ) && !$contentNotAvail

用PHP写这篇文章的最好方法是什么,这样我就知道哪种情况会失败,并且很容易维护?无需使用多个if-else语句

if ((!$titleBlockPresent || !$leadBlock || ($allDoubleBlockCount !=2 || $allDoubleBlockCount!=1) ||$countFirstSmallShowBlocks !=2 ||$countSecondSmallShowBlocks !=2 ) && !$contentNotAvailableMessage)
{
    $this->fail("Block missing in the horizontal list of blocks on the non live carousel");
}

如果将该复选框移动到函数中,您和查看代码的任何人都会很清楚,并且很容易维护,例如:

function tester($var1, $var2, $var3)
{
    if (!$var1) 
    {
        $this->fail("error1");
        return FALSE;
    }
    if (!$var2) 
    {
        $this->fail("error2");
        return FALSE;
    }
    if (!$var3) 
    {
        $this->fail("error3");
        return FALSE;
    }
    return TRUE;
}
如果需要进一步澄清,您还可以在每个
中添加注释。

试试这个

$shouldFail = FALSE;
switch(TRUE){
 case !titleBlockPresent:
    echo "No title block present<br/>";
    $shouldFail = TRUE;
 case !$leadBlock:
    echo "No lead block<br/>";

  // the rest of the code
}
$shouldFail=FALSE;
开关(真){
案例!标题栏当前:
回显“不存在标题栏
”; $shouldFail=TRUE; 案例!$leadBlock: 回音“无导线阻塞
”; //代码的其余部分 }
我刚刚想到了这个,但注意到它与GeoPhoenix的答案非常相似,相反,可能也值得一看:

$bFail = false;

if(!$bFail && $contentNotAvailableMessage) $bFail = true;
if(!$bFail && !$titleBlockPresent ) $bFail = true;
if(!$bFail && !$leadBlock ) $bFail = true;

if(!$bFail && $allDoubleBlockCount != 2) $bFail = true;
if(!$bFail && $allDoubleBlockCount != 1) $bFail = true;
if(!$bFail && $countFirstSmallShowBlocks != 2) $bFail = true;
if(!$bFail && $countSecondSmallShowBlocks != 2) $bFail = true;

if($bFail) $this->fail("Block missing in the horizontal list of blocks on the non live carousel");

简化你的逻辑,这样你就不会一次检查7个条件。你要求最好的方法,但在你的问题中你说“不要使用多个if-else语句”。我认为底线是大多数(或许多)人认为多个语句是最好的方法。