php进行二分法查找,做积分排名
/** * 二分法查找 * * @param int $score 积分 * @param array $filter 积分规则 * * @return array $filter * * 请求方式 $result = TribeMemeberLevel(240, $filter); echo current($result)['level']; */ function TribeMemeberLevel($score,$filter=null){ $array = [ ['level' => "成员",'id'=>'4', 'min' => 0, 'max' => 1430], ['level' => "战士",'id'=>'3', 'min' => 1431, 'max' =>50000], ['level' => "使者",'id'=>'2', 'min' => 50001, 'max' => 99999999999999], ]; $filter=$filter?$filter:$array; $mid = intval(count($filter) / 2); // 取出中間数 // 判断贡献值在哪个区间 if ($score <= $filter[$mid - 1]['max']) { $filter = array_slice($filter, 0 , $mid); } else { $filter = array_slice($filter, $mid , count($filter)); } // 继续递归直到只剩一个元素 if (count($filter) != 1) { $filter = TribeMemeberLevel($score,$filter); } return $filter; }