背景:一个会员有三个状态,A、B、C,其中一个人可以为 A、B、C、AB;之前数据表结构加了三个字段is_a、is_b、is_c; 本人实在不想这样粗糙的实现需求,遂决定用位运算优化。
上代码:

位运算可以用来处理状态值。这些状态值通常表示为2的幂次方数字,通过不同的组合可以表示不同的状态或条件。
<?php
// 定义状态常量
define('A', 1);  // 001
define('B', 2); // 010
define('C', 4);   // 100
// 设置用户状态
$status = 0;
echo '值:' . $status . PHP_EOL;
$status |= A;     // 设置活跃状态
echo '值:' . $status . PHP_EOL;
$status |= B;   // 添加不活跃状态
echo '值:' . $status . PHP_EOL;
// 检查状态
if ($status & A) {
    echo "用户等级 A" . PHP_EOL;
}
if ($status & B) {
    echo "用户等级 B" . PHP_EOL;
}
if ($status & C) {
    echo "用户等级 C" . PHP_EOL;
}
// 移除状态
$status &= ~B;    // 移除B
echo '值:' . $status . PHP_EOL;

















