我的数组包含AM / PM格式的时间,并希望根据当前时间获得下一个时间。
Array ( [main2] => 4:17 am [main3] => 5:39 am [main4] => 12:26 pm [main5] => 3:42 pm [main6] => 7:13 pm [main7] => 8:43 pm )
当前时间是7:14 PM,根据上面的数组,它应该返回8:43 pm +“ main7”键。
答案 0 :(得分:2)
答案与treyBake几乎相同,但不那么复杂(在我看来)。
使用array_search查找时间并从数组中返回key + 1。
$find = '7:14 pm';
$array = ['4:16 am', '5:38 am', '12:26 pm', '3:42 pm', '7:14 pm', '8:43 pm',];
$array[] = $find;
$array = array_unique($array); // if $find is duplicated then remove one of them
sort($array);
$result = $array[(array_search($find, $array)+1)];
var_dump($result); //8:43 pm
答案 1 :(得分:1)
您可以执行以下操作:
<?php
# get next key in arr
function getNextKey($haystack, $needle)
{
$keys = array_keys($haystack);
$pos = array_search($needle, $keys);
if (isset($keys[$pos + 1])) {
return $keys[$pos + 1];
}
return false;
}
$array = ['4:16 am', '5:38 am', '12:26 pm', '3:42 pm', '7:14 pm', '8:43 pm'];
# your inputted time
$time = '7.13 pm';
# push into the array
array_push($array, $time);
# sort by time
usort($array, function($a, $b) {return strtotime($a) - strtotime($b);});
# get the key and use it to get the next val in the array
$timeKey = array_search($time, $array);
$nextTime = $array[getNextKey($array, $timeKey)];
# display
print_r($nextTime);
在这里,我们创建一个函数以返回数组中的下一个键,我们用它来获取数组中的下一个时间。一旦获得下一个值,您可以再进一步从数组中删除输入的时间-但这取决于您。