/ / Określanie flag według wartości całkowitej - php, integer, flags

Wyznaczanie flag przez wartość całkowitą - php, integer, flags

Wiele funkcji PHP używa stałych z wartościami całkowitymi dla flag. Stąd wartość całkowita:

48 = 32, 16

51 = 32, 16, 2, 1

Byłem ciekawy, czy istnieje funkcja / klasa php lub bardziej elegancki sposób odwrócenia procesu w celu rozbicia liczby całkowitej, jak to zrobiłem powyżej, a nawet lepszego określenia flag związanych z funkcją.

Myślałem o ustawieniu tablicy asocjacyjnejw ten sposób: ["flag name" => int], a następnie zapętlony przez tablicę, aby zsumować wartości wszystkich możliwych kombinacji, ale wydaje się to dość nieefektywne. Szczególnie, gdy mamy do czynienia z aż 12 flagami, mamy miliony kombinacji.

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz użyć bitwise AND, aby sprawdzić, czy wartość jest ustawiona:

$a = 23;
$sixteen = 16;
$eight = 8;
if($a & $sixteen) echo "the 16 bit is set";
if($a & $eight) echo "the 8 bit is set";