按位掩码 - 如何设置不同的选项?

时间:2011-06-16 05:36:13

标签: php bit-manipulation

我使用位掩码访问应用程序,我有一个数组:

  $arr['view_info'] = 2;
  $arr['view_terminals'] = 4;
  $arr['view_payments'] = 6;
  $arr['view_subdealers'] = 8;
  $arr['view_providers'] = 10;
  $arr['view_users'] = 12;
  $arr['view_reports'] = 14;

所以,问题是 - 如何添加权限,例如 - view_terminals和view_reports,而不允许访问4到14之间的opts?

只是最后一个Q - 如何添加超过8个权限,因为我知道我们在二进制sys中有255个最大值 - 所以最后一个是128?我听说过群体。

2 个答案:

答案 0 :(得分:2)

为了使用位掩码,你需要让数组的值为2的幂。参见http://en.wikipedia.org/wiki/Mask_(computing

在你的情况下:

$arr['view_info'] = 1;            // 0000000001
$arr['view_terminals'] = 2;       // 0000000010
$arr['view_payments'] = 4;        // 0000000100
$arr['view_subdealers'] = 8;      // 0000001000
$arr['view_providers'] = 16;      // 0000010000 
$arr['view_users'] = 32;          // 0000100000
$arr['view_reports'] = 64;        // 0001000000

并为您的用户(0001000010

将用户权限设置为2 + 64

答案 1 :(得分:2)

这些值非常难以实现。您的位掩码值应为2的幂,即1,2,4,8,16,32,64,128,256等。然后您可以$arr['view_terminals'] | $arr['view_reports']