二进制:(可用于用户权限操作)
eg: 010 | 011 = 011
011 & 101 = 001
用户状态:
已领取新人红包:status = 1 (01)
已支付过的用户:status = 2 (10)
public function update_user_status($user, $new_status)
{
$new_user_status = $user['status'] | $new_status;
if ($new_user_status != $new_status) { //如果旧状态中没有此状态,$new_user_status会包含新旧状态一起更新
$this->mysql()->update(['id'=>$user['id'],'status'=>$new_user_status]);
}
return true;
}
eg: $user['status'] = 010 ; $new_status = 001 ; $new_user_status = 011(更新数据,状态包含两种状态)
public function has_user_status($user, $status)
{
$user['status'] = $user['status'] ?? 0;
$user_status = $user['status'] & $status;
return $user_status == $status;//返回true/false
}
eg: $user['status'] = 011; $status = 001; $user_status = 001; return true;
public function update_user_status($user, $new_status)
{
$new_user_status = $user['status'] | $new_status;//01 10 /11
if ($new_user_status != $user['status']) {
return $this->mysql()->update(['status'=>$new_user_status,'id'=>$user['id']]);
}
return true;
}
public function has_user_status($user,$status)
{
$user['status'] = $user['status'] ?? 0;
$user_status = $user['status'] & $status;//11 10 /10
return $user_status == $status;
}