我有以下函数调用的以下数组:
$monetary_break_points = array(
10000,
20000,
30000,
40000,
);
$lowest_searched = get_closest(1200,$monetary_break_points,0);
$highest_searched = get_closest(24000,$monetary_break_points,1);
我有以下功能:
function get_closest($search, $arr, $sort) {
if($sort == 1){
rsort($arr);
}
else {
sort($arr);
}
$closest = null;
foreach ($arr as $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
return $closest;
}
该函数返回数组$arr
中最接近传递给它的值。
但是,我需要找到最接近的值,该值小于传入的值和有时传递的值,并且最接近的值高于传入的值,具体取决于我的需要。因此,函数中的第三个参数,如果我想找到最接近的较高值I rsort
数组。理论上,这应该返回最接近的较高数字,但实际上它确实返回最接近的较低数字。谁有人建议为什么?
$lowest_searched
设置为1000,这是正确的。
$highest_searched
设置为20000,这是不正确的,它应该是30000。
答案 0 :(得分:1)
$monetary_break_points = array(
10000,
20000,
30000,
40000,
);
echo '<br/><br/>lowest_searched'.$lowest_searched = get_closest(1200,$monetary_break_points,0);
echo '<br/>highest_searched'.$highest_searched = get_closest(24000,$monetary_break_points,1);
function get_closest($search, $arr, $sort) {
if($sort == 1){
rsort($arr);
}
else {
sort($arr);
}
$closest = null;
foreach ($arr as $item) {
if($sort == 0)
{
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
if($sort == 1)
{
if($search < $item )
$closest = $item;
}
}
return $closest;
}