有没有人遇到过这个问题哈!PHP 获取下一个符合条件的整点数各位有什么建议?

问题描述
例如有一个数组,存储的是一些整点数据,无排序无规律,
ex:$hours=[1,3,6,2,13,16,18,20];
现在需要快速得出当前时间最接近的整点数,如果当前整点在数组内,则为当前整点,
如果不在,则获取下一个最接近的整点数,依次类推。整点数应该大于等于当前整点,
但是得判断跨天的情况,列如当前时间点是21点,那符合条件的应该是1。
问题出现的环境背景及自己尝试过哪些方法
因为是时间整点,所以是24进制,没法直接判断最临近的数,
所以目前想到的办法是循环这个数组,依次拼接出各个时间戳(还得判断是否为跨天),
然后当前时间戳做减法,取绝对值,然后按照这个差值进行排序,获取符合条件的数,
总觉得效率不高,请问有更好的解法吗?
繁星coding
浏览 282回答 2
2回答

慕姐8265434

还是自己来吧!$hours=[1,3,6,2,13,16,18,20];$current_hour=date("G")+1;$hours=array_unique($hours);$count=count($hours);$hours[]=$current_hour;sort($hours);$idx=array_search($current_hour,$hours);if($idx==$count){$result=$hours[0];}else{$result=$hours[$idx+1];}echo$result;

长风秋雁

$hours=[1,3,6,2,13,16,18,20];$current_hour=21;$minDiff=null;$return_hour=null;foreach($hoursas$hour){$diff=$hour-$current_hour;if($diff$diff)){$minDiff=$diff;$return_hour=$hour;}else{}}echo$return_hour;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript