我有一个阵列列出了一堆军事时间,我试图找到下一个最接近当前时间的值。例如,当它是上午9:30时,它应该在早上9:40返回,因为这是下一个最大的时间,但不管它在什么时间,它将返回上午10:00。
numpy.fromiter()
我经历了多次尝试诊断问题,尝试在前几次删除前面的所有零都返回了一个更奇怪的结果,即晚上7点。
答案 0 :(得分:0)
我的数组和前缀数字出错:
解析错误:(数组行号)中的数字文字无效...
您可以将数组上的值定义为字符串,并使用(int)
将其强制转换为函数。请参阅以下解决方案:
<?php
function closest($array, $number) {
sort($array);
foreach ($array as $a) {
if ((int) $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);
$nexttime = closest($array, '0930');
echo $nexttime;
答案 1 :(得分:0)
前导零的数字被视为八进制数,0730例如是十进制的472。如果在八进制整数中给出无效数字(如9),则忽略该数字的其余部分。
将数字列表存储为一个长字符串,然后使用explode()
将其转换为数组,或者在4位数字周围加上引号,将数组的每个元素定义为字符串,然后使用{ {1}}在函数中进行正确的类型转换。
(int)