二进制运算符按位与 & 巧妙解决复选框的
今天遇到一个需求,简单点来说就是有一个复选框的选项如下:
爱好: 篮球 ☑ 足球 ☑ 羽毛球 ☑
在数据库中的存储有一下2种思路:
1 定义一个字段 hobby tinyint 1篮球 2足球 3羽毛球 4篮球+足球 5篮球+羽毛球 6篮球+羽毛球 7足球+羽毛球 8篮球+足球+羽毛球
即:把这三个选项进行排列组合找出每种情况进行存储
这样做可以满足业务的需求,但是如果要是将来再添加一个选项的话,那么将是一场灾难。
2 使用php 中的&运算符 按位与运算符
定义如下
2篮球 4足球 8 羽毛球
数据库中的hobby字段存储的就是选择后的和,这样在进行编辑或者获取这个用户的爱好的时候只要做一次按位与&运算就行了
例子:
如果我选择了篮球 足球 乒乓球 则数据库存的是所有之和 14 在编辑的时候只需要从数据库里的 14 和选项做与 & 运算 大于0 说明选择了 小于0则说明没有选择 $res = 14 & $pingpong;输出8 var_dump($res);
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: