$filter = array(
array('level' => 1, 'min' => 1, 'max' => 50),
array('level' => 2, 'min' => 51, 'max' => 110),
array('level' => 3, 'min' => 111, 'max' => 180),
array('level' => 4, 'min' => 181, 'max' => 260),
array('level' => 5, 'min' => 261, 'max' => 500)
);
function level_search($score, $filter)
{
$half = floor(count($filter) / 2); // 取出中間数
// 判断积分在哪个区间
if ($score <= $filter[$half - 1]['max']) {
$filter = array_slice($filter, 0 , $half);
} else {
$filter = array_slice($filter, $half , count($filter));
}
// 继续递归直到只剩一个元素
if (count($filter) != 1) {
$filter = level_search($score, $filter);
}
return $filter;
}
$result = level_search(240, $filter);
$ret = current($result);
print_r($ret['level']);