发布时间:2015-05-27 19:22:46作者:知识屋
假设有十进制数字10
获取10的二进制每一位的值:
(10 >> 0) & 0x01 //最低位的值
(10>> 1)& 0x01 //倒数第二位的值
假设有二进制数101
转10进制
$res = 0;
$res |= (1 << 0); //低位是1
$res |= (1 << 1);//高位是1
//中间位不是1
power as $k => $v){ if(in_array($v,$user)){ $res |= (1 << $k); } } return $res; } //根据int值获取权限列表 function getPowerByInt($num){ $res = array(); foreach($this->power as $k => $v){ $res[$v] = ($num >> $k) & 0x01; } return $res; }}//假设现在有个用户拥有P1,P4权限$user = array('P1','P4');$test = new Test();//查看用户权限的int值var_dump($test->getPowerInt($user));//输出9//注意顺序为倒序如果有个用户是0101即只有P1,P3两个权限,即十进制5,//输出权限列表var_dump($test->getPowerByInt(5));//输出array(4) {// ["P1"]=>// int(1)// ["P2"]=>// int(0)// ["P3"]=>// int(1)// ["P4"]=>// int(0)// }//----------------如果权限不够用了,需要新增权限--------//倒序。新增在高位//修改$power// $power = array(// "P1",// "P2",// "P3",// "P4",// "P5",// );// 测试新结果 :老权限不受影响。老用户默认没有新权限// 所以可以在设计之初认为最低位为最高权限,all。// var_dump($test->getPowerInt($user));//输出9// var_dump($test->getPowerByInt(5));//输出array(4) {// ["P1"]=>// int(1)// ["P2"]=>// int(0)// ["P3"]=>// int(1)// ["P4"]=>// int(0)// ["P5"]=>// int(0)// }
如何对PHP文件进行加密方法 PHP实现加密的几种方式介绍
php生成圆角图片的方法 电脑中php怎么生成圆角图片教程
用PHP构建一个留言本方法步骤 php怎么实现留言板功能
php中三元运算符用法 php中的三元运算符使用说明
php文件如何怎么打开方式介绍 php文件用什么打开方法
PHP怎么插入数据库方法步骤 php编程怎么导入数据库教程
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
PHP 获取远程文件大小的3种解决方法 如何用PHP获取远程大文件的大小
20个实用PHP实例代码 php接口开发实例代码详细介绍
如何架设PHP服务器方法步骤 怎么搭建php服务器简单教程