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


Bitwise mask - how to set different opts?

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

  $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;

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

只是最后一个问题-如何添加8个以上的权限,正如我所知,我们在二进制系统中有255个最大值-所以最后一个是128?我听说过团体。

用那些很难做的值。你的位掩码值应该是2的幂,即1、2、4、8、16、32、64、128、256等。然后你就可以做$arr['view_terminals'] | $arr['view_reports']了。

为了使用位掩码,您需要使数组的值为2的幂。看见http://en.wikipedia.org/wiki/Mask_(计算)

在您的情况下:

$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