我使用位掩码访问应用程序,我有一个数组:
$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?我听说过群体。
答案 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
)
答案 1 :(得分:2)
这些值非常难以实现。您的位掩码值应为2的幂,即1,2,4,8,16,32,64,128,256等。然后您可以$arr['view_terminals'] | $arr['view_reports']
。