$array = []; for ($i=0; $i < 1000000; $i++) { $array[$i+1000] = $i; } $value = '1000999'; $php_start = php_start(); $key = array_compare($array, $value); pf($array[$key]); pf(php_stop($php_start)); pf('----------------------------'); $php_start = php_start(); $res = array_each($array, $value); pf($res); pf(php_stop($php_start)); function array_each($array, $value) { $res = 0; foreach ($array as $key => $val) { if($value >= $key) { $res = $val; } } return $res; } /** * 快速排序区间查询 * @param [type] $array [数据数组] * @param [type] $value [对比的值] * @param boolean $start [是否初始] * @return [type] [description] */ function array_compare($array, $value, $start = true) { // 初始化 if($start) { // KEY值数组 $array = array_keys($array); // 排序 sort($array); } // 总数 $count = count($array); $index = floor($count / 2); $middle = $array[$index]; if($value == $middle) { // 如果相等 return $value; } else { if($value < $middle) { // 值小于中间的数 $array = array_slice($array, 0, $index); } else { // 值大于中间的数 $array = array_slice($array, $index, $index+1); } if(count($array) > 1) { $func = __FUNCTION__; return $func($array, $value, false); } else { return $array[0]; } } }
点击 "运行实例" 按钮查看在线实例