我有一个PHP数组,它有一堆来自最近24小时记录的时间戳:
array(402) {
[0]=>
int(1518465028)
[1]=>
int(1518465031)
[2]=>
int(1518465033)
[3]=>
int(1518465044)
[4]=>
int(1518465082)
[5]=>
int(1518465096)
[6]=>
int(1518465113)
我希望这些时间戳按小时分组,所以我得到一个这样的数组:
['0:00'] => 5 //meaning there were 5 timestamps between 0 am and 0:59:59 am
['1:00'] => 7 //7 between 1 am and 1:59:59 am
每小时都应该在数组中。如果在这个小时内没有任何时间戳,那么它应该得到一个值0。
我想在PHP中这样做,因为我无法访问MySQL本身。 谁知道怎么做?
编辑(问题被标记为重复):我认为这个问题与重复中提到的问题不同,因为我无法访问MySQL查询和时间格式是Unix。至少我在PHP方面不够熟练,无法使用上面提到的副本。
答案 0 :(得分:0)
我能想到两种方式;格式为每个时间戳的值hour:00
并计算它们:
$result = array_count_values(
array_map(function($v) { return date('G:00', $v); }, $array));
或者循环并添加索引hour:00
并为每个找到的值增加:
foreach($array as $value) {
$hr = date('G:00', $value);
$result[$hr] = isset($result[$hr]) ? ++$result[$hr] : 1;
}
如果需要,您可以先sort
或ksort
之后。