値が有効なフラグの組み合わせを表しているかどうかを判断しようとしています。
ここにいくつかのテストコードがあります:
$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;
}
}
ご覧のとおり、配列に 2 つの特定のフラグが含まれているかどうかを確認しようとすると失敗します。ANDを機能させる方法はありますか?
$test = 4 & 16; // should return true because both values are in the array