PHP IF语句的帮助-或AND等

PHP IF语句的帮助-或AND等,php,if-statement,Php,If Statement,我有个小问题。我希望创建一个IF语句,其反应如下: 如果用户不是管理员(论坛管理员),并且他们不是票证的所有者(用户ID),但允许版主查看票证(允许版主查看票证),并且用户是版主(论坛版主),则应允许他查看票证 如何使用PHP if语句获得此结果 到目前为止,我有: //If user is not allowed to view. if($userdata['forum_admin']==0 && $ticketDetails['userid']!=$user

我有个小问题。我希望创建一个IF语句,其反应如下:

  • 如果用户不是管理员(论坛管理员),并且他们不是票证的所有者(用户ID),但允许版主查看票证(允许版主查看票证),并且用户是版主(论坛版主),则应允许他查看票证
如何使用PHP if语句获得此结果

到目前为止,我有:

 //If user is not allowed to view.  
    if($userdata['forum_admin']==0 && $ticketDetails['userid']!=$userdata['id'] || $sdata['allow_moderator_ticket']==0 && $userdata['forum_moderator']==1)
        redirect("?i=a");

不能混合and和or运算符。互相残杀。 您应该使用括号对表达式进行分组,就像在算术中一样

重构您的代码以使其可读性会很好

$admin = ($userdata['forum_admin']);
$owner = ($ticketDetails['userid'] == $userdata['id']);
$moder = ($sdata['allow_moderator_ticket'] == 1 AND $userdata['forum_moderator']==1)

if !($admin OR $moder OR $owner) {
    redirect("?i=a");
}

不能混合and和or运算符。互相残杀。 您应该使用括号对表达式进行分组,就像在算术中一样

重构您的代码以使其可读性会很好

$admin = ($userdata['forum_admin']);
$owner = ($ticketDetails['userid'] == $userdata['id']);
$moder = ($sdata['allow_moderator_ticket'] == 1 AND $userdata['forum_moderator']==1)

if !($admin OR $moder OR $owner) {
    redirect("?i=a");
}

是的,不管怎样,管理员都应该被允许。我认为你把事情弄得太复杂了。获取允许用户逐个查看票证的条件,通过或连接它们,最后是
!()
这个。(当然,你也应该
()
由几个子条件组成的条件,以避免操作员优先级问题。)是的,无论如何都应该允许管理员。我认为你把它弄得太复杂了。获取允许用户逐个查看票证的条件,通过或连接它们,最后是
!()
这个。(当然,您还应该
()
包含多个子条件的条件,以避免运算符优先级问题。)