Dat verhaal is niet moeilijk als je een beetje een logica probeert te vinden.
In de functie die TS hier geeft wordt gecontroleerd of een bepaalde "bit" in het getal is "geset", dit soort structuren worden heel vaak gebruikt met rechtensystemen.
Stel dat er de volgende rechten zijn:
Lezen: 1
Schrijven: 2
Uitvoeren: 4
Iemand met het nummer 3 heeft dus recht op lezen en schrijven, bit 1 en 2 zijn hoog. (bits 1 en 2 zijn TRUE; 1)
Dus je geeft een gebruiker het rechten 'nummer' 75. Simpel.
Om dan weer uit te vinden of een waarde is gekozen gebruik je PHP's bitwise codes.
Stel je gebruikt een forum met topics; Als je wilt weten of een gebruiker een 'topic' kan 'locken', gebruik je de volgende code:
75 & 64 = 64, dus de gebruiker kan 'topics locken'
Als je wilt weten of een gebruiker kan uitvoeren gebruik je weer:
75 & 4 = 0, dus de gebruiker kan NIET uitvoeren.
Een bitwise operator werd vroeger vaak gebruikt voor ja-nee situaties. Als je een aantal parameters had die alleen ja of nee konden zijn kon je in een byte 8 van die parameters opslaan. Met het & teken en een voorgedefinieerde constante kon je dan checken of een bepaald bit gezet was.
0000 0001 = 1 (2 tot de macht 0)
0000 0010 = 2 (2 tot de macht 1)
0000 0100 = 4 (2 tot de macht 2)