获取/设置属性的二进制操作

时间:2013-10-25 05:08:41

标签: php binary-operators

我想将用户权限存储为数据库中的整数,但不确定如何...如何在PHP上使用error_reporting()

你有不同的常数,比如... E_ERROR = 1,E_WARNING = 2,E_PARSE = 4,E_NOTICE = 8等......你可以设置为error_reporting(E_ERROR | E_NOTICE) ...

在这种情况下E_WARNING | E_NOTICE == 10。

好的,所以我明白这是二进制操作“OR”,并且就连续常数乘以2而言,一切都应该是可逆的......但是如何?

所以我得到了这个(int)10。我如何检查它是E_WARNINGE_NOTICE

PS。我确实理解二进制表示法是1010

2 个答案:

答案 0 :(得分:1)

如果要检查值是否设置,可以使用按位AND &运算符。

$warningEnabled = $val & E_WARNING;

这是有效的,因为(假设$val128)...

1000 0000 & # $value
0000 0010   # E_WARNING

由于两者都未设置相同的位,因此可以判断$val没有设置警告。

如果您喜欢使用bindec()函数(将上述值包装为字符串),可以在PHP中执行此操作,这可能有助于您更好地理解。

答案 1 :(得分:1)

如果您想知道该值是否包含E_WARNING,请执行:

if ($value & E_WARNING)