如何正确地在PHP中存储日期和关联值?

时间:2014-03-17 19:52:42

标签: php arrays date datetime int

我有以下类型的数据(这是一个简化版本):

//date            //int
2014-01-29        4
2014-02-04        5
2014-02-07        2
2014-02-16        1

我希望每月存储一次,所以按照这些方式:

2014-01 -> 4
2014-02 -> 8

目前,我能想到的唯一方法是使用字符串和整数的二维数组:

$date_data[0][0] = '2014-01';
$date_data[0][1] = 4;

$date_data[1][0] = '2014-02';
$date_data[1][1] = 8;

存储此类型数据的正确方法是什么,以便我可以按日期顺序遍历它。

3 个答案:

答案 0 :(得分:3)

您可以使用字符串作为数组索引。

$date_data['2014-01'] = 4;
$date_data['2014-02'] = 8;

然后您可以按日期访问数组。

答案 1 :(得分:0)

你可以做一个关联数组 -

$date_data(
    0 => array('date'=>'2014-01', 'count'=> 4),
    1 => array('date'=>'2014-02', 'count'=> 8)
);

答案 2 :(得分:0)

这将循环显示日期及其值,并按年份和月份对其进行分组并增加总值。如有必要,您可以在之后对其进行排序。

<?php
$dates = array(
  '2014-01-29' => 4,
  '2014-02-04' => 5,
  '2014-02-07' => 2,
  '2014-02-16' => 1,
);

$values = array();
foreach ($dates as $date => $value) {
    $dt = new DateTime($date);
    $key = sprintf('%s-%s', $dt->format('Y'), $dt->format('m'));
    if (!isset($values[$key])) {
        $values[$key] = 0;
    }
    $values[$key] += $value;
}

print_r($values);
// Array ( [2014-01] => 4 [2014-02] => 8 ) 

See it in action