我创建了一个'最大'值的数组。
$management = array(
'100' => '1',
'500' => '2',
'1000' => '3',
);
并创建了一个循环来找到最接近的值,将其四舍五入。
$speed = 10;
$r= '';
sort($management);
foreach($management as $mgmt => $name) {
if($mgmt >= $speed) {
$r= $name;
}
}
$r= end($management);
那么,$speed
是10
,它应该拿起阵列键100
,如果它是100
它应该仍然拾取100
但如果速度是200
,它将拾取500
当500
是$speed
时,上面是拿起10
。
有人可以帮忙吗?
这是一个如何做到这一点的例子:
$array = array(1, 10, 100, 200, 400, 500, 1000);
public function getArrayRoundUp($array, $number) {
sort($array);
foreach ($array as $a) {
if ($a >= $number) return $a;
}
return end($array);
}
$value = 950;
$nearest = getArrayRoundUp($array, $value);
//the expect result will be 1000
echo $nearest;
使用以下功能
function find(array $array, $search)
{
$last = null; // return value if $array array is empty
foreach ($array as $key => $value) {
if ($key >= $search) {
return $key; // found it, return quickly
}
$last = $key; // keep the last key thus far
}
return $last;
}
经过测试和工作: -
echo find($management, 100); // Will result 100
echo find($management, 200); //Will result 500