У меня есть массив, например (это может быть что угодно, но он уже упорядочен):
array(1,7, 12, 18, 25);
Мне нужно найти, какое число ближе всего к этому массиву.
Принимая вышеуказанный массив:
$needle = 11;
Число в массиве, которое я хочу получить, равно 7
.
Самое близкое число к 11
должно быть 12
, но я не хочу самое близкое число, я хочу младшее самое близкое число, если это имеет смысл.
Другие примеры:
- Ввод
26
полученный номер должен быть 25
- Ввод
1
полученный номер должен быть 1
- Ввод
6
полученный номер должен быть 1
- Ввод
7
полученный номер должен быть 7
- Ввод
16
полученный номер должен быть 12
Я нашел хорошую функцию, но она получает только самое близкое число, а не младшее ближайшее число:
function closestnumber($number, $candidates) {
for($i = 0; $i != sizeof($candidates); $i++) {
$results[$i][0] = abs($candidates[$i] - $number);
$results[$i][1] = $i;
}
sort($results);
$end_result['closest'] = $candidates[$results[0][1]];
$end_result['difference'] = $results[0][0];
return $end_result;
}
$closest = closestnumber(8,array(1,7, 12, 18, 25));
echo "Closest: ".$closest['closest']."<br>";
echo "Difference: ".$closest['difference'];
Заранее спасибо.