从数组中找到形成给定数字的键

时间:2014-03-08 23:32:18

标签: php

我有以下数组

$array = array(
1=>"a",
2=>"b",
4=>"c",
8=>"d",
16=>"e"
);

然后我有以下数字$ var = 12;这个数字来自上面数组中的键的总和。 (显然$ var改变了。)

如何找到实际创建$ var的键。

在示例中:

12 = array key 4 + array key 8

希望我很清楚...

1 个答案:

答案 0 :(得分:1)

二进制数。 Magic XD

$array = array(1=>"a",2=>"b",4=>"c",8=>"d",16=>"e");
$results = array();
$num = 12;
foreach($array as $i=>$v) {
    if( $num & $i) $results[$i] = $v;
}
// in this case, you get $results = array(4=>"c",8=>"d");