Как извлечь все битовые флаги в PHP
Сниппет
Пример с выводом всех флагов:
<?php
$value = 1153;
function hasStaticType($num, $type) {
return ($num & $type) ? true : false;
}
$i=0;
while($type<$value){
$type = 1 << $i;
if(hasStaticType($value,$type)){
echo $type.PHP_EOL;
}
$i++;
}
Пример функции, которая вернет все флаги в массиве:
<?php
function hasStaticType($num, $type) {
return ($num & $type) ? true : false;
}
function getAllFlags($value) {
$res = [];
$i = $type = 0;
while($type < $value){
$type = 1 << $i;
if(hasStaticType($value,$type)){
$res[] = $type;
}
$i++;
}
return $res;
}
/* Использование*/
$value = 1153;
print_r(getAllFlags($value));