【问题标题】:Binary operation to get / set property获取/设置属性的二进制操作
【发布时间】:2013-11-04 01:57:01
【问题描述】:

我想将用户权限作为整数存储在数据库中,但不知道如何...它如何在 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

【问题讨论】:

  • 您的 DBMS 不支持 SET 数据类型吗?
  • @Barmar 不确定你的意思。
  • @Barmar 这很酷,以前没听说过...仍然不申请用户权限,因为每次我需要确定用户是否拥有该权限时,我都无法查询数据库...

标签: php binary-operators


【解决方案1】:

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

if ($value & E_WARNING)

【讨论】:

    【解决方案2】:

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

    $warningEnabled = $val & E_WARNING;
    

    这是因为(假设 $val128)...

    1000 0000 & # $value
    0000 0010   # E_WARNING
    

    由于两者没有设置相同的位,您可以看出$val 没有设置警告。

    如果您愿意,可以在 PHP 中使用bindec() 函数执行此操作(将上述值包装为字符串),它可以帮助您更好地理解。

    【讨论】:

    • 是的,我明白……还有一些其他的概念,但这应该足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多