最近要写一个审核的功能:5个层级审核,打算用一个status状态位记录每一层级审核是否通过。很少用到位操作,因此记录下。
<?php
function setStatus($status, $stage, $is_approved)
{
$arr_a = array_map(function ($val) {
return 1 << $val;
}, range(0, 4));
$arr_r = array_map(function ($val) {
return $val - 1;
}, $arr_a);
if ($is_approved == 1) {
$status_up = $status | $arr_a[$stage - 1];
} else {
$status_up = $status & $arr_r[$stage - 1];
}
return $status_up;
}
$status = 0;
echo '<pre>';
for ($i = 1; $i <= 5; $i++) {
$status = setStatus($status, $i, 1);
var_dump("stage {$i} approved,status: {$status}");
}
var_dump('-------------');
$status = 0;
$stage = 1;
$status = setStatus($status, $stage, 1);
var_dump("stage {$stage} approved,status: {$status}");
$stage++;
$status = setStatus($status, $stage, 1);
var_dump("stage {$stage} approved,status: {$status}");
$stage++;
$status = setStatus($status, $stage, 0);
var_dump("stage {$stage} rejected,status: {$status}");
标签:status,状态,记录,多级,审核,变更
From: https://www.cnblogs.com/caroline2016/p/18259049