复选框在数据库中存储的新思路

经常会遇见这么一个情况,需求中有:

爱好: 篮球 ☑ 足球 ☑ 羽毛球 ☑

在数据库中,你可以区分为三列,分别是篮球、足球、羽毛球,值就存trueORfalse

今天提供一个新的思路给大家,

篮球=2 足球=4 羽毛球=8

数据库中存选中的选项的值的和。

如我选择了篮球、足球,则值的和为:6

然后再次编辑的时候,只要拿6分别和选项做与运算, 结果大于0则说明选择了,等于0则说明未选择。

原理解析:

其实很简单,就是最常用的与运算,

比如羽毛球, 8 换算为二进制为:1000, 6换算为二进制为:0110。

 1 0 0 0      

———— =  0000

 0 1 1 0

而 2的二进制为 0010

 0 0 1 0      

———— =  0010 = 十进制的2 > 0

 0 1 1 0

总结:

优点在于减少了很多代码量,很灵巧的解决了问题。

缺点在于数据库中的值,不能清晰的显示出用户选择了什么。

大家根据自己的需求,可以继续完善算法,我这里只是提供一个小思路。

猜你喜欢

转载自6318343.iteye.com/blog/2220659