如何否定php if或statement

时间:2019-02-09 23:21:07

标签: php if-statement

在我的一个网站中,我使用以下if语句:

if (isAdmin() || (isSupporter() && hasRight("XXX")) {
    echo "<a href='/page'>Menu</a>";
}

此语句用于确定用户是否可以在主导航中看到链接。如果用户是具有给定权限的管理员或支持者,那就如此。

我现在正尝试否定此语句,以防止用户访问链接指向的页面。这意味着我正在尝试查找一条if语句,如果用户既不是管理员也不是具有给定权限的支持者,则该语句将返回false。到目前为止,我使用以下语句:

if (!isAdmin() || !isSupporter() || !hasRight("XXX")) {
    die();
}

此语句的问题在于,只有管理员,支持者和具有特定权限的用户才能访问该页面。 所以我的问题是,是否有一种方法可以否定第一条语句,以便管理员或支持者有权访问该页面?谢谢

1 个答案:

答案 0 :(得分:2)

首先,&&的优先级高于||(例如*+)。因此,您可以删除1个括号对:

if ( isAdmin() || isSupporter() && hasRight("XXX") )

一个简单的否定就是添加括号并取反整个表达式。

if ( !( isAdmin() || isSupporter() && hasRight("XXX") ))

取反逻辑表达式意味着取反所有元素,并交换&&||。出于优先考虑,您必须添加括号(如此处),也可以将其删除。

if ( !isAdmin() && ( !isSupporter() || !hasRight("XXX") )