0

私は論理結合 AND を実装しようとしていますが、この簡略表記が許可されているかどうか疑問に思っていました:

$hasPermissions &= user_hasAppPermission($user_id, $permission);

または、これを行う必要がありますか:

$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);
4

3 に答える 3

5

省略形&=ビット単位の代入演算であり、2 番目のステートメントとは異なります。これは、次のことと同じです (単一のアンパサンドに注意してください)。

$hasPermissions = $hasPermissions & user_hasAppPermission($user_id, $permission);

私が見る限り、あなたの「長い」ステートメントはそのままで問題ないようです。

于 2012-01-10T22:47:53.047 に答える
1

PHP では、次の論理演算を使用できます。

$val1 && $val2
$val1 and $val2

また

$val1 || $val2
$val1 or $val2

いいえ

! $val

XOR

$val1 xor $val2

さらに、このページを見てください。2 つの演算子&&とは、 とと||は優先順位が異なります。andor

したがって、2番目のオプションは次の方法です。

$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);

ところで:常に使用===して equality を比較することを提案します。=== は、そのオペランドの型と値が同じであることを保証しますが、値を==キャストします。

于 2012-01-10T22:59:00.013 に答える
0

私は次のようなことをします:

$hasPermissions = (($hasPermissions) && (true === user_hasAppPermission($user_id, $permission))) ? true : false;
于 2012-01-10T22:48:14.077 に答える