私は論理結合 AND を実装しようとしていますが、この簡略表記が許可されているかどうか疑問に思っていました:
$hasPermissions &= user_hasAppPermission($user_id, $permission);
または、これを行う必要がありますか:
$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);
私は論理結合 AND を実装しようとしていますが、この簡略表記が許可されているかどうか疑問に思っていました:
$hasPermissions &= user_hasAppPermission($user_id, $permission);
または、これを行う必要がありますか:
$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);
省略形&=
はビット単位の代入演算であり、2 番目のステートメントとは異なります。これは、次のことと同じです (単一のアンパサンドに注意してください)。
$hasPermissions = $hasPermissions & user_hasAppPermission($user_id, $permission);
私が見る限り、あなたの「長い」ステートメントはそのままで問題ないようです。
PHP では、次の論理演算を使用できます。
と
$val1 && $val2
$val1 and $val2
また
$val1 || $val2
$val1 or $val2
いいえ
! $val
XOR
$val1 xor $val2
さらに、このページを見てください。2 つの演算子&&
とは、 とと||
は優先順位が異なります。and
or
したがって、2番目のオプションは次の方法です。
$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);
ところで:常に使用===
して equality を比較することを提案します。=== は、そのオペランドの型と値が同じであることを保証しますが、値を==
キャストします。
私は次のようなことをします:
$hasPermissions = (($hasPermissions) && (true === user_hasAppPermission($user_id, $permission))) ? true : false;