为什么我应该在PHP中使用位运算/位掩码?
为什么我应该在PHP中使用位运算/位掩码?
我正在为一个脚本开发一个使用 PHP 的用户角色/权限系统。
下面是一个使用位掩码方法来处理权限的代码,我在 phpbuilder.com 上找到的。
下面是一个更简单的版本,可以基本上完成相同的功能,但没有使用位操作。很多人推荐在 PHP 中使用位操作符等设置和其他事情,但我从来没有理解为什么。在下面的代码中,使用第一个代码而不是第二个代码有任何好处吗?
0) { for($i = 0, $n = 0; $i <= $mask; $i = 1 * pow(2, $n), $n++) { $end = $i; } $return[] = $end; $mask = $mask - $end; } sort($return); return $return; } define('PERMISSION_DENIED', 0); define('PERMISSION_READ', 1); define('PERMISSION_ADD', 2); define('PERMISSION_UPDATE', 4); define('PERMISSION_DELETE', 8); //运行函数 // 这个值将从用户的设置 mysql 表中获取 $_ARR_permission = bitMask('5'); if(in_array(PERMISSION_READ, $_ARR_permission)) { echo '访问授权。'; }else { echo '访问被拒绝。'; } ?>
非位操作版本