• 冒险村物语
  • 英雄无敌3塔防
  • 驾考家园手游

php 做权限管理

2014-09-05

假设有十进制数字10

获取10的二进制每一位的值:

(10 >> 0) & 0x01 //最低位的值

(10>> 1)& 0x01 //倒数第二位的值

假设有二进制数101

转10进制

$res = 0;

$res |= (1

$res |= (1

//中间位不是1

power as $k => $v){			if(in_array($v,$user)){				$res |= (1 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)// }



人气推荐

知识阅读

精彩推荐

  • 游戏
  • 软件
查看更多>>