我试图确定一个值是否代表有效标志的组合。
下面是一些测试代码:
$permissions = [2, 4, 16, 1024];
$test = 8; // single value - ok
$test = 4 | 8 | 2048; // OR - ok
$test = 4 | 16; // OR - ok
$test = 4 & 8; // AND - ok
$test = 4 & 16; // AND - fails :(
foreach($permissions as $perm){
if($test & $perm){
print 'ok!';
break;
}
}
正如您所看到的,当我尝试查看数组是否包含两个特定标志时它失败了。有什么办法可以让我工作吗?
$test = 4 & 16; // should return true because both values are in the array