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;
    }

私がやろうとしているのは、$ Divisionが1または2で、member1、member2、member3、member4が配列にある場合は$ membershipsがfalseを返し、$ Divisionが1または2でなく、member5が配列にある場合はfalseを返すということです。他のすべてはtrueを返します。

member5が配列内にあり、$ Divisionが1であるため、これは機能していません。これはtrueを返すはずですが、falseを返します。

PS --member1-5は、実際には私の配列内の個人情報であるため、ここで使用している名前です。

私は何を間違っていますか?

4

4 に答える 4

2

私はこれを一連の異なる「if」ステートメントとして行い、それを解決しようとして曲がり角を回避することを避けます。

あなたの声明に従ってこのコードを作成しました...

私がやろうとしているのは、$division が 1 または 2 で、member1、member2、member3、member4 が配列にある場合、$memberships が false を返し、$division が 1 または 2 ではなく、member5 が配列にある場合、false を返すということです。それ以外はすべて true を返します。

私はロジックを正しく持っていると思います、私はそれを再確認しようとしています:

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;
    }
}
于 2012-11-12T15:39:41.767 に答える
0

これらは、1行に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))
于 2012-11-12T15:35:11.727 に答える
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;
于 2012-11-12T15:50:29.780 に答える
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;
}
于 2012-11-12T15:49:05.083 に答える