$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];
}
}
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号