PHP位运算与或异或

本文介绍了如何利用PHP的位运算符(与、或、异或)进行权限控制,通过将权限编码为二进制数,简化了多权限存储和判断,避免了使用多个字段的问题。通过位运算,可以方便地添加、检查和移除权限。
摘要由CSDN通过智能技术生成

应用场景:
你是否遇到过这样的问题?我现在有个功能有很多权限控制,但是我不能使用很多字段用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;
	// 判断一下是否加上了呢
	if (($audit_type & $write) != 0) {
		echo "i have write level";
	}
	if (($audit_type & $read
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值