如果这里的陈述没有工作,我就有这个
if(
($division->id == 1 || $division->id == 2) &&
in_array('member1', $memberships) ||
in_array('member2', $memberships) ||
in_array('member3', $memberships) ||
in_array('member4', $memberships) ||
($division->id != 1 || $division->id != 2)
&& in_array('member5', $memberships))
{
return FALSE;
} else {
return TRUE;
}
我想要做的是说$ division是1还是2,如果member1,member2,member3,member4在数组$ membership中,则返回false,如果$ division不是1或2且member5在数组中返回false,其他一切都返回true。
这不起作用,因为member5在数组中,$ division是1,它应该返回true,但它返回false。
PS - member1-5只是我在这里使用的名字,因为它们实际上是我阵列中的个人信息。
我做错了什么?
答案 0 :(得分:2)
我会做一系列不同的'if'陈述,以避免你试图解决这个问题。
我根据你的陈述创建了这段代码......
我想要做的是说$ division是1还是2,如果是member1, member2,member3,member4在数组$ membership中返回false, 如果$ division不是1或2并且member5在数组中返回false, 其他一切都归于真实。
我认为我的逻辑是正确的,我正要仔细检查它:
if ($division->id == 1 || $division->id == 2)
{
if (in_array("member_2", $memberships) || in_array("member_3", $memberships) || in_array('member_3', $memberships) || in_array('member_4', $memberships))
{
return false;
}
else
{
return true;
}
}
else
{
if (in_array("member_5", $memberships))
{
return false;
}
else
{
return true;
}
}
答案 1 :(得分:0)
这些是逻辑分组,每行1个。如果这不是你想要的,请使用括号来调整php如何评估它。
($division->id == 1 || $division->id == 2) && in_array('member1', $memberships)
|| in_array('member2', $memberships)
|| in_array('member3', $memberships)
|| in_array('member4', $memberships)
|| ($division->id != 1 || $division->id != 2) && in_array('member5', $memberships))
答案 2 :(得分:0)
尝试:
if(
(($division->id == 1 || $division->id == 2) &&
(in_array('member1', $memberships) ||
in_array('member2', $memberships) ||
in_array('member3', $memberships) ||
in_array('member4', $memberships))) ||
(($division->id != 1 || $division->id != 2)
&& in_array('member5', $memberships)))
{
return FALSE;
} else {
return TRUE;
}
答案 3 :(得分:0)
较少的代码行并不总是意味着它更好,将其分解并使其可读,例如:
$output = true;
if($division->id == 1 || $division->id == 2)
{
if(in_array("member_2", $memberships) || in_array("member_3", $memberships) || in_array('member_4', $memberships))
{
$output = false;
}
}
else
{
if (in_array("member_5", $memberships))
{
$output = false;
}
}
return $output;