如果数字高于最接近的值,则查找匹配值或四舍五入



我正在尝试实现用户向应用程序输入数字的功能,例如101。基于这个数字,函数应该循环遍历一个数组并找到匹配的值。如果没有找到,它应该找到最接近的值,并四舍五入到更高的值。我不知道如何正确解释这一点,但这里有一个例子:

数组由数字100、150、200组成。

•用户输入数字101。找不到确切的数字,函数应返回值150

•用户输入数字151。找不到确切的数字,函数应返回值200

•用户输入数字150。找到了确切的数字,函数应返回值150

我做了一个函数,可以找到匹配或最接近的值,但这不是我想要的,因为它不会将数字四舍五入,以防找不到完全匹配的值。

$arr(100, 150, 200)
$search = 101;
function getClosest($search, $arr) {
$closest = null;
foreach ($arr as $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
return $closest;
}

在这种情况下,它返回最接近101的数字,即100。我希望它返回150。我该怎么解决这个问题?

您可以这样做。首先对数组进行排序,这样您就可以获得下一个最高值。

<?php
$array = array(100,150,200);
$number = 101;
echo closest($array, $number);
function closest($array, $number) {
sort($array);
foreach ($array as $a) {
if ($a >= $number) return $a;
}
return end($array); // or return NULL;
}
?>