【问题标题】:How to store dates and associated values in PHP correctly?如何在 PHP 中正确存储日期和相关值?
【发布时间】:2014-04-23 05:27:54
【问题描述】:

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

//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;

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

【问题讨论】:

  • 第一个示例存储是正确的,之后是关于有效选择所需数据的问题

标签: php arrays date datetime int


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    你可以做一个关联数组-

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

    【讨论】:

      【解决方案3】:

      这将遍历日期及其值,并按年和月对它们进行分组,并增加总值。如有必要,您可以在之后对其进行排序。

      <?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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多