「与」存储后要怎么查询

背景

上一篇文章是关于「与运算存储一对多关系」,通过数据库的与运算可以查询出掌握了某个编程语言的猿。如何查询某猿掌握了哪几种语言呢?

方法一

1.查询出猿A存储的编程语言的值(194)

2.查询出所有编程语言2^数值和语言名对应的数组
($languages=[[1=>'Java'),[2=>'C'],[3=>'C++']....])

3.通过循环、与运算筛选出猿A掌握的编程语言

    foreach($languages as $languageId => $languageName ){
        if($languageId & 194 == $languageId){
            //掌握的语言
            //C语言(2) 、 PHP(64) 、 JavaScript(128)
        }
    }

方法二

以上方法会把所有编程语言都查出来,能不能通过194反推出是由哪几个编程语言「与」出来后的结果呢?

$bin =  decbin(194);//11000010 
function getArray($bin){
    $data = [];
    $len = mb_strlen($bin,'utf-8');//8
    $index = $len - 1;
    for($i=0;$i<=$index;$i++){
        $num = $bin[$i];
        if($num <> 0){
            $data[] = pow(2,$index-$i);
        }
    }
    return $data;
}
getArray($bin);//[128,64,2]
上一篇:194、搜索旋转排序数组


下一篇:leetcode-华为专题-221. 最大正方形