用戶權限管理代碼
define('PATTERN_MODE_INT', 1);
define('PATTERN_MODE_STRING', 2);
function bitToArray($data, $ruleArr, $mode = PATTERN_MODE_INT)
{
$varData = array();
if($mode == PATTERN_MODE_INT)
{
$usedBit = 0;
for($i = 0; $i < Count($ruleArr); $i++)
{
if($ruleArr[$i] <= 0 ) continue;
$turnData = pow(2, $ruleArr[$i]) - 1 << $usedBit & $data;
$varData[$i] = $turnData >> $usedBit;
$usedBit += $ruleArr[$i];
}
}
else
{
for($i = 0, $cnt = Count($ruleArr); $i < $cnt; $i++)
{
$varData[$i] = substr($data, $i, $ruleArr[$i]);
}
}
return $varData;
}
function arrayToBit($data, $ruleArr, $mode = PATTERN_MODE_INT)
{
$rslt = '';
if($mode == PATTERN_MODE_INT)
{
$usedBit = 0;
$rslt = 0;
for($i = 0; $i < Count($ruleArr); $i++)
{
if($ruleArr[$i] <= 0 ) continue;
if(!$data[$i]) $data[$i] = 0;
$rslt |= $data[$i] << $usedBit;
$usedBit += $ruleArr[$i];
}
}
else
{
for($i = 0, $cnt = Count($ruleArr); $i < $cnt; $i++)
{
$rslt .= sprintf('%0' . $ruleArr[$i] . 's', $data[$i]);
}
}
return $rslt;
}