Bootstrap

PHP位运算与或异或

应用场景:
你是否遇到过这样的问题?我现在有个功能有很多权限控制,但是我不能使用很多字段用1,0来存储这么多权限,这样做感觉太low了,而且判断起来需要用到很多字段,维护起来好麻烦,后期如果再新增其他权限还需要新增字段。

下面用一个简单的小技巧告别这种不科学和反人类的设计吧!

这里只需要用到几个php的位运算,参照php官方文档
在这里插入图片描述
所以我们只需要用一个十进制数字来存储这些权限即可,十进制转换为二进制后的每一位都代表一个权限,为1则有权限,为0则无权限。
show me the code!

<?php
	$write = 2; // 写权限用2表示
	$read = 4;  // 读权限用4表示
	$high = 8;  // 最高权限用8表示
	// 还可以根据需求定义更多的权限,但注意必须为2的指数
	$audit_type = 0; 初始化权限值,0则是所有多没有权限
	// 我想给一个人加个写权限
	$audit_type = $audit_type | $write;
	// 再加个读权限和最高权限
	$audit_type = $audit_type | $read | $high;
	// 判
;