mysql中set多选项类型的数据解析原理
2018-07-28 本文已影响15人
老衲灬
一、set多选项类型的应用形式
set类型通常用于存储表单中的“多选项”的值。
设定形式:
set(‘选项值1’, ‘选项值2’, ‘选项值3’, ....)
这些选项值都对应了相应的“索引值”,其索引值从1开始,并“依次翻倍”。
即这些选项的索引值分别为:1, 2, 4, 8, 16, ..... (其实就是2的n次方)
set类型最多可设定64个选项值。

二、原理解析
当选项数据以一个整数的形式传递过来的时候,其解析的原理如下:
解析原理代码演示如下:
$set = ["篮球","足球","冰球","排球","水球"];
$getNum = 6;
function getSet($getNum,$set){
//将获取的数值转化为二进制,并进行反转
$binNum = strrev(decbin($getNum));
$strlen = strlen($binNum);
$str = "";
for($i=0;$i<$strlen;$i++){
if($binNum[$i]==1) $str .= $set[$i].",";
}
$str = rtrim($str,",");
return $str;
}
echo getSet($getNum,$set);
运行结果如下:
