我正在尝试实现逻辑连接 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);
速记&=
是按位赋值操作,不等同于您的第二条语句。这与做的相同(注意单个&符号):
$hasPermissions = $hasPermissions & user_hasAppPermission($user_id, $permission);
从我所见,你的“长”陈述似乎很好。
在 PHP 中,可以使用以下逻辑操作:
和
$val1 && $val2
$val1 and $val2
或者
$val1 || $val2
$val1 or $val2
不是
! $val
异或
$val1 xor $val2
此外,请查看此页面。这两个运算符&&
和||
具有不同的优先级and
和or
。
因此,您的第二个选择是要走的路:
$hasPermissions = $hasPermissions && user_hasAppPermission($user_id, $permission);
BTW: I'd propose to always use ===
to compare for equality. === ensures that the types of its operands are identical and the values are, while ==
casts values.
我会做类似的事情:
$hasPermissions = (($hasPermissions) && (true === user_hasAppPermission($user_id, $permission))) ? true : false;