首页 > 解决方案 > 将数字向上舍入到数组中最接近的值

问题描述

我创建了一个包含“最大值”值的数组。

$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);

所以,在哪里$speed10它应该拾取数组键100,如果是,100它应该仍然拾取100,但如果速度是200,它会拾取500

上述情况500正在$speed上升10

有人可以帮忙吗?

标签: php

解决方案


您的代码有几个问题。首先,调用sort重写$management您用于比较的数组的所有键;您需要改为使用ksort键而不是值进行排序。其次,由于键是按升序排列的,一旦一个大于该值,它们都将是,因此一旦找到更高的值就$speed需要从循环中取出。break试试这个:

$r= '';
ksort($management);
foreach($management as $mgmt => $name) {
    if($mgmt >= $speed) {
        $r= $name;
        break;
    }
}
echo $r;

3v4l.org 上的演示


推荐阅读