我需要从特定日期获取最新时间。在星期五的这个例子中。我有一个名为$arrayFriday
的数组,它继承了时间戳。
现在我需要在同一天找出哪些时间戳是最新的。
数组$arrayFriday
:
Array
(
[0] => 1483691580
[1] => 1483696140
[2] => 1483701240
[3] => 1483720920
[4] => 1489142460
[5] => 1489144140
[6] => 1489150260
[7] => 1489750920
[8] => 1489760160
[9] => 1489765800
[etc.]
)
在这个阵列中,有些时候我会努力。 例如06.01.2017 17:42是我回家的时间。
输出(来自此示例)应为:
Array
(
[0] => 1483720920
[1] => 1489150260
[2] => 1489765800
)
或者,如果我从$ integerFriday(GMT + 1)回显它:
06.01.2017 17:42
10.03.2017 13:51
17.03.2017 16:50
所以输出也是一个数组,但只是整理了同一天的最新时间戳。
我的尝试:
foreach ($arrayFriday as $key => $value) {
if(date('m.d.Y', $value) == date('m.d.Y', $arrayFriday[$key-1])){
$integerFriday= $value;
} else {
echo date('l d.m.Y H:i', $integerFriday);
}
}
答案 0 :(得分:3)
使用日期作为结果数组中的键。如果您的时间戳数组已排序,那么这就是您需要做的。当您迭代时间戳时,同一日期的后续值将覆盖该日期键的值,并且您将为每个日期留下最大的时间戳。
foreach ($timestamps as $ts) {
$latest_times[date('Ymd', $ts)] = $ts;
}
您的数组必须事先排序才能生效。它看起来像你的,但如果不是,那么先sort($timestamps);
。
答案 1 :(得分:0)
这样的事情既简短又甜蜜:
rsort($arrayFriday);
$integerFriday = [$arrayFriday[0]];
foreach ($arrayFriday as $time) {
if(date('m.d.Y', end($integerFriday)) > date('m.d.Y', $time)){
$integerFriday[] = $time;
}
}
当然,列表越大,所需的时间越长,因为您要对其进行排序。如果它总是排序,那么你可以用array_reverse()
来反转它。
输出:
Friday 17.03.2017 15:50
Friday 10.03.2017 12:51
Friday 06.01.2017 16:42