我有一列列出军事时间的数组,我试图找到下一个最接近当前值的数值。例如,当它是上午9:30时,它应该返回上午9:40,因为这是下一个最大的时间,而不管它现在是什么时间,它将在10:00上午返回。不返回我阵列中的下一个最大值
function closest($array, $number) {
sort($array);
foreach ($array as $a) {
if ($a >= $number) return $a;
}
return end($array);
}
$array = array(0730,0750,0810,0830,0840,0850,0900,0910,0920,0930,0940,0950,1000,1010,1020,1030,1040,1050,1100,1110,1120,1130,1140,1150,1210,1230,1250,1310,1330,1350,1410,1430,1450,1510,1530,1550,1610,1630,1650,1710,1720,1730,1740,1750,1800,1810,1820,1830,1840,1850,1900,1910,1920,1930,1940,1950,2000,2010,2020,2030,2040,2050,2100,2120,2140,2200,2220,2240,2300,2320);
$number = date("Hi");
$nexttime = closest($array, $number);
echo date("g:i a", strtotime("$nexttime"));
我经历过很多次试图诊断问题,试图消除在最初的几次前所有零的返回下午7:00的更奇怪的结果。
用'0'前缀数字告诉php将其解释为八进制。 –
您是否尝试使用print_r进行排序后输出数组? – bksi
它似乎总是返回结束($ array) – bksi