dedlfix: Berechtigungen

Beitrag lesen

Tach!

Gegeben ist ein integer. Anhand dieser einen Zahl sind Platzhalter zu setzen für neun Checkboxen, checked oder nicht und ich denke schon, dass ich dafür 9 Zeilen Code brauche.

Ja, aber das Schieben muss nicht sein.

$bit0 = (bool)($permission & 1); // alternativ mit Oktaltahl: 0001
$bit1 = (bool)($permission & 2); // 0002
$bit2 = (bool)($permission & 4); // 0004
$bit3 = (bool)($permission & 8); // 0010
$bit4 = (bool)($permission & 16); // 0020
$bit5 = (bool)($permission & 32); // 0040
$bit6 = (bool)($permission & 64); // 0100
$bit7 = (bool)($permission & 128); // 0200
$bit8 = (bool)($permission & 256); // 0400

Deine ursprünglicher Text ging von den Wertigkeiten (1, 2, 4, 8, ...) aus. Die spiegeln sich in obigem Code deutlich wider. Beim Verschieben und Maskieren mit 1 sieht man diese Wertigkeit nicht mehr. Je nachdem wie du das Verschieben löst, kann man nur die Position erkennen oder auch nicht (wenn es in einer Schleife stattfindet).

Es kann natürlich sein, dass eine Schleife und das Verschieben trotzdem die bessere Lösung in einem speziellen Fall ist, aber da du die näheren Umstände und damit die eigentliche Aufgabe nicht offenbart hast, kann ich nur generell antworten. Und da ist das einfache Maskieren weniger umständlich als ein zusätzliches Verschieben.

dedlfix.