Ich habe ein Array mit einer Reihe von militärischen Zeiten aufgelistet und ich versuche, den nächstliegenden Wert bis zur aktuellen Zeit zu finden. Zum Beispiel, wenn es 9:30 Uhr ist, sollte es 9:40 Uhr zurückkehren, weil das die nächste größte Zeit ist, aber stattdessen wird es 10:00 Uhr zurückkehren, egal wie spät es ist.Nicht den nächsten größten Wert in meinem Array
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"));
ich durch es gab viele Male versucht, das Problem zu diagnostizieren, zu versuchen, all die Nullen vor den ersten paar Male entfernen zurück ein noch seltsamere Ergebnis 07.00.
Fyi, das eine Zahl mit '0' voranstellt, sagt php, um es als oktal zu interpretieren. –
Haben Sie versucht, das Array nach dem Sortieren mit print_r auszugeben? – bksi
es scheint, dass es immer endet Ende ($ Array) – bksi