我有以下格式的数组$post
$post[0] = [
'id' => '103',
'date' => '2016-04-17 16:30:12',
'desc' => 'content description'
];
$post[1] = [
'id' => '102',
'date' => '2016-04-17 12:30:12',
'desc' => 'content description'
];
$post[2] = [
'id' => '101',
'date' => '2016-04-17 10:30:12',
'desc' => 'content description'
];
$post[3] = [
'id' => '100',
'date' => '2016-04-16 08:30:12',
'desc' => 'content description'
];
我想使用strtotime(date)
中的$post
作为唯一数组键,并创建:
$summary['day-of-2016-04-17'] = [
'counts' => '3'
];
$summary['day-of-2016-04-16'] = [
'counts' => '1'
];
其中counts
是用作密钥的日期的出现次数。
我只需要保留日期本身,因为唯一键和时间值无关。
我需要将键值作为unix时间戳进行进一步处理。
如何以最有效的方式实现这一目标?
答案 0 :(得分:1)
只需使用date
作为密钥即可。最简单的方法就是使用爆炸日期时间,获取第一个片段(即日期),并像任何普通数组一样分配它:
$summary = [];
foreach($post as $value) {
$dt = explode(' ', $value['date']); // break the date
$day_of = "day-of-{$dt[0]}"; // create the naming key
if(!isset($summary[$day_of])) { // initialize
$summary[$day_of]['counts'] = 0;
}
$summary[$day_of]['counts']++; // increment
}