现在的硬盘越来越便宜,内存越大越大,程序也越做越大了。为什么不用位来表示权限呢?我来给你个demo把
只要用一小小的整数, 0-65535 (0xffff)就可以表示 16种类别的权限。
以及 6万多种不同权限的排列组合。
如果不够用,php 的 signed int型最大可以到 21亿吧 0x7fffffff
<?
define("_A",0x0001);
define("_B",0x0002);
define("_C",0x0004);
define("_D",0x0008);define("_E",0x0010);
define("_F",0x0020);
define("_G",0x0040);
define("_H",0x0080);define("_I",0x0100);
define("_J",0x0200);
define("_K",0x0400);
define("_L",0x0800);define("_M",0x1000);
define("_N",0x2000);
define("_O",0x4000);
define("_P",0x8000);$bit=0x0000; //初始状态没任何权限$bit |= _E; //给它 _E 权限
$bit |= _N; //给它 _N 权限
if ($bit & _E) printf("_E ok\n");
if ($bit & _N) printf("_N ok\n");
if (($bit & _E) && ($bit & _N)) printf("_E _N ok\n\n\n\n");$bit &= ~_N; //剥夺 _N 权限if ($bit & _E) printf("_E ok\n");
if ($bit & _N) printf("_N ok\n");
if (($bit & _E) && ($bit & _N)) printf("_E _N ok\n");
只要用一小小的整数, 0-65535 (0xffff)就可以表示 16种类别的权限。
以及 6万多种不同权限的排列组合。
如果不够用,php 的 signed int型最大可以到 21亿吧 0x7fffffff
<?
define("_A",0x0001);
define("_B",0x0002);
define("_C",0x0004);
define("_D",0x0008);define("_E",0x0010);
define("_F",0x0020);
define("_G",0x0040);
define("_H",0x0080);define("_I",0x0100);
define("_J",0x0200);
define("_K",0x0400);
define("_L",0x0800);define("_M",0x1000);
define("_N",0x2000);
define("_O",0x4000);
define("_P",0x8000);$bit=0x0000; //初始状态没任何权限$bit |= _E; //给它 _E 权限
$bit |= _N; //给它 _N 权限
if ($bit & _E) printf("_E ok\n");
if ($bit & _N) printf("_N ok\n");
if (($bit & _E) && ($bit & _N)) printf("_E _N ok\n\n\n\n");$bit &= ~_N; //剥夺 _N 权限if ($bit & _E) printf("_E ok\n");
if ($bit & _N) printf("_N ok\n");
if (($bit & _E) && ($bit & _N)) printf("_E _N ok\n");
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货