没有返回我的数组中的下一个最大值

时间:2016-06-12 13:49:05

标签: php

我有一个阵列列出了一堆军事时间,我试图找到下一个最接近当前时间的值。例如,当它是上午9:30时,它应该在早上9:40返回,因为这是下一个最大的时间,但不管它在什么时间,它将返回上午10:00。

numpy.fromiter()

我经历了多次尝试诊断问题,尝试在前几次删除前面的所有零都返回了一个更奇怪的结果,即晚上7点。

2 个答案:

答案 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;

演示: http://ideone.com/TceTRb

答案 1 :(得分:0)

前导零的数字被视为八进制数,0730例如是十进制的472。如果在八进制整数中给出无效数字(如9),则忽略该数字的其余部分。

将数字列表存储为一个长字符串,然后使用explode()将其转换为数组,或者在4位数字周围加上引号,将数组的每个元素定义为字符串,然后使用{ {1}}在函数中进行正确的类型转换。

(int)