如何根据另一个数组的计算值创建一个包含键的新数组?

时间:2016-04-19 02:56:09

标签: php arrays

我有以下格式的数组$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时间戳进行进一步处理。

如何以最有效的方式实现这一目标?

1 个答案:

答案 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
}