2012-06-26 136 views
1

我有一个投票系统,允许用户投票的项目。现在我正在通过首先检查用户是否登录然后检查他们是否已经投票来做到这一点。我想知道是否有更好的方法来做这件事,因为我被告知嵌套if语句是要避免的。嵌套如果声明好或坏?

我的代码:

if ($loggedIn) { 
    if($row['voted']){ 
     You Already voted 
    }else{ 
     <a href="#">Agree</a> 
    } 
}else{ 
    Please Register 
} 
+0

嵌套'if'声明是确定的,除非它是太深了。 2级是正常的。 – nhahtdh

回答

4

嵌套if(...){ ... }else{ ... }陈述是好的,只要他们是逻辑和易于阅读/维护。另一种选择是审查你的论点的逻辑,看看它们是否可以用更简单的方式表达。

例如,您提供的代码可以表示为:

if(!$loggedIn){ 
    echo 'Please Register'; 
}elseif($row['voted']){ 
    echo 'You Already voted'; 
}else{ 
    echo '<a href="#">Agree</a>'; 
} 
1

这不是那么简单。你的例子很简单,但其他情况不是。在你的例子中,如果语句可以使用,就很容易遵循如此嵌套的内容。在更复杂的代码中,深层嵌套的语句使代码难以维护。与许多事情一样,它会根据情况而有所不同,您需要根据具体情况来决定。

0

一般来说,没关系。你想避免过于复杂的嵌套if语句

0

在这种情况下,它很好,事实上在大多数情况下它是。只有当你有很多嵌套的问题时才会出现这个问题,所以它可能变得很难阅读,你可能会忘记一些东西,但这是可读性,使用嵌套if语句的逻辑没有任何错误。