軍隊の列が並んでいる配列があり、現在の時刻までの次の値を見つけようとしています。たとえば、午前9時30分になると9時40分に戻ってくるはずです。なぜなら、次の時間なので、午前10時です。私の配列の次の最大値を返さない
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"));
私は、最初の数回の前にゼロをすべて削除しようとすると、問題を診断しようと多くの時間が19:00のも、見知らぬ結果を返されたことをしてきました。
fyiの前に「0」を付けると、phpはそれを8進数として解釈します。 –
print_rを使ってソートした後に配列を出力しようとしましたか? – bksi
それはいつも終わりを返します($ array) – bksi