-2

配列内のいくつかの項目と別の変数をチェックする if 式があります。私の元のif式はこれでした:

if(!in_array($user->id, array($lsp->created_by_id, $lsp->approving_committee_pri_id, $lsp->approving_committee_sec_id)) or $user->level != 5)
{
    $error[] = 'You do not have permissions to modify this.';
}

しかし、私は望ましい結果を得ていません。基本的に、ユーザーの ID が配列にない場合、またはユーザーのアクセス レベルが 5 に等しくない場合は、$error配列に入力する必要があります。ユーザーのIDが配列内にあるか、アクセスレベルが5に等しくなるようにデータベースを変更しても、配列にデータが入力されています$error

コードを機能させるには、コードをこれに変更する必要がありました。これは、以前のコードとは逆のようなものです。

if(in_array($user->id, array($lsp->created_by_id, $lsp->approving_committee_pri_id, $lsp->approving_committee_sec_id)) or $user->level == 5)
{
    //does nothing
}
else
{
    $error[] = 'You do not have permissions to modify this.';
}

私は何を間違っていますか?これを1行でやりたいのですが、何かを正しく理解していない可能性があります。PHP 5.4.14 を使用しています。ありがとう!

4

2 に答える 2

0

私はあなたが使いたいと信じていますXOR

if(!in_array($user->id, array($lsp->created_by_id, $lsp->approving_committee_pri_id, $lsp->approving_committee_sec_id)) XOR $user->level != 5)

いずれか一方を意味しますが、両方ではありません

于 2013-08-23T15:40:57.947 に答える