假设我分配以下果实:
array ('1' => 'apple', '2' => 'banana', '4' => 'grape', '8' => 'orange')
如果我想表示apple
和banana
,我可以做以下操作:0001 OR 0010
得到0011
(或3(,对吗?
给定数字3
,如何将其转换为1
和2
?
所有密钥都将加载到$keys
:中
$keys = array();
$value = 3;
foreach ($arr as $key => $val)
{
if ($value & $key)
{
$keys[] = $key;
}
}
通常您以这种方式使用比特掩码(语言无关(
BANANA = 0x1
APPLE = 0x2
GRAPE = 0x4
LEMON = 0x8
PAPAYA = 0x10
GUAYABA = 0x20
myFavoriteFruits = BANANA | GRAPE // I like both bananas and grapes.
现在测试一下我是否喜欢你评价的香蕉:
myFavoriteFruits & BANANA
在循环中使用逐位AND(&(运算符来测试位。