Я следующий массив со следующими вызовами функций:получить наиболее близкое значение из массива вверх или вниз
$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.