定义几个常量(常量值设为16进制码,16进制码表示有64位二进制码,这样我们就可有64种不同的变化)
const FLAG_A = 0x01; const FLAG_B = 0x02; const FLAG_C = 0x04; const FLAG_D = 0x08; .....
我们定义一个$flag变量,设置为0
$flag = 0;
用位与(|)运算存储,相当于(1+2+7+8)
$flag = $flag | FLAG_A; // 结果 1 $flag = $flag | FLAG_B; // 结果 3 $flag = $flag | FLAG_C; // 结果 7 $flag = $flag | FLAG_D; // 结果 15
把运算结果存入数据库
+------+ | flag | +------+ | 15 | +------+
接下来检查数据库中的值是否存在我们所设定的常量中。 取出数据库中flag = 15 的值与定义常量做位或(&)运算,两位同时为“1”,结果才为“1”,否则为0
if($flag & FLAG_D) { echo true; } else { echo false; }
mysql存储与更新
位取反运算(~):将对应的二进制数逐位反转,即 1 取反后变 0 , 0 取反后变 1
$flag = 1; //标志位 $set = 1; //1设置,0取消 $nonFlag = ~((int)$flag); //取反后-2 if ($set) { //执行sql更新后,在二进制中该标志位变成1 $sql = "UPDATE test SET `flag`=`flag`|$flag WHERE id=1"; } else { //取反运算,执行sql更新后,在二进制中该标志位变成0 $sql = "UPDATE test SET `flag`=`flag`&$nonFlag WHERE id=1"; } $db->query($sql);
这样在php代码中查询数据库做运算的时候,从运行结果来看,如果是1存在,否则0不存在。
您可以选择一种方式赞助本站