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 № 1Moż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";