<?php
function toValid($var) {
return strtotime(str_replace('.', ':', sprintf('%.2f', $var)));
}
function getNearest($arr, $var)
{
$given = toValid($var);
$array = array_map('toValid', $arr);
$distance = PHP_INT_MAX;
$index = -1;
for ($c = 0; $c < count($array); $c++) {
$c_distance = $array[$c] - $given;
if ($c_distance > 0 && $distance > $c_distance) {
$distance = $c_distance;
$index = $c;
}
}
return $index < 0 ? $var : $array[$index];
}
echo date('H.i', getNearest([14.49, 17.57, 12.30, 19.22], '13.30')); echo "\n";
echo date('H.i', getNearest([14.49, 17.57, 12.30, 19.22], '12.30')); echo "\n";
echo date('H.i', getNearest([14.49, 17.57, 12.30, 19.22], '18.30')); echo "\n";
- Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- 14.49
14.49
19.22
preferences:
205.17 ms | 403 KiB | 187 Q