2016-04-12 26 views
2
Aşağıdaki bayrakları var

:Basit bitmasking yardımı

ben ayarlayabilirsiniz anlamak ve (o kullanıcı 3 bitlik maskeleri erişimi olan, tüm üç Bayraklar için biraz maskesi kontrol etmek istiyorum
- edit profile => 1 
- update coupon => 2 
- update news articles => 4 

).

  • Tüm bitleri birlikte mi ekliyoruz?
  • Sadece 2'ye erişiminiz nedir?

Burada ne yapılacağından tam olarak emin değilim.

cevap

2

Bir kullanıcının tüm izinlere sahip olmasını istiyorsanız, o zaman or bitlerini kullanın.

örn.

$permission_bitmask = $edit_profile | $update_coupon | $update_news_articles; 

Sadece iki izin için, aynı fikirdir.

$permission_bitmask = $edit_profile | $update_coupon; 

Bit maskesini ve bit maskesini istediğiniz bitle kontrol etmek için.

$has_edit_profile = ($edit_profile & $permission_bitmask) !== 0; 
+0

@RyanVincent Tek seferde yalnızca bir bit kontrol ediyorsanız fark etmez. Eğer iki bit maskesini birden çok biti ile karşılaştırmak isterseniz (ör. Bu kullanıcının en azından bu bit maskesi olduğunu kontrol edin), o zaman evet ve 'değerlerini istenen minimum bit maskesi ile karşılaştırmanız gerekir. – Chris