我有一列列出軍事時間的數組,我試圖找到下一個最接近當前值的數值。例如,當它是上午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