Как извлечь все битовые флаги в 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));
Похожие снипеты
- Проверить, начинается ли строка с определенных символов
- Валидация URL
- Проверить ассоциативность массива
- Проверка, все ли значения в массиве равны
- Валидация XML
- Проверить, установлен ли битовый флаг
- Проверить, сериализована ли строка
- Валидация JSON
- Проверка равенства двух массивов
- Обнаружение ботов через user agent