将所有年份的日期作为键应用到数组中

时间:2015-07-17 08:02:52

标签: php arrays

我有一个包含364个值的数组。数组的每个值代表一年中每一天的状态。

数组如下所示:

array([0]=>'something',
      [1]=>'something_else'
      ....
      [364]=> 'the_end_of the year')

我想要做的是将所有array keys替换为一年中的日期。看起来像这样:

array([2015-01-01]=>'something',
      [2015-01-02]=>'something_else'
      ....
      [2015-12-31]=> 'the_end_of the year')

4 个答案:

答案 0 :(得分:2)

可能你可以使用这样的东西。

<?php
    date_default_timezone_set('UTC');

    // Start date
    $date = '2015-1-1';
    // End date
    $end_date = '2015-12-31';

    $result = array();
    while (strtotime($date) <= strtotime($end_date)) {
        $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
        $result[$date]="your info";
    }
    echo "<pre>";print_r($result);
?>

答案 1 :(得分:2)

您可以尝试使用 -

$begin = new DateTime('2015-01-01');
$end = new DateTime('2015-12-31');
$end = $end->modify('+1 day'); 

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$new = array();
foreach($daterange as $date){
    $new[$date->format("Ymd")] = "Your values";
}

答案 2 :(得分:0)

好的,这是一个例子

 <?php
     $new = array();
     for($i=0; $i<365; $i++) {
        $key = date('Y-m-d',strtotime('01.01.2015 +'.$i.' days'));
        $new[$key] = $i;
     }
     var_dump($new);
     die;

,在你的情况下

  $new = array();
  foreach($array as $i=>$value) {
    $key = date('Y-m-d',strtotime('01.01.2015 +'.$i.' days'));
    $new[$key] = $value;
  }
  var_dump($new);
  die;

答案 3 :(得分:-1)

您可以使用createFromFormat方法迭代直到数组并将当前日转换为DateTime对象

$d = DateTime::createFromFormat('z Y', '110 2015');

其中110是一年中的某一天,2015年是创建日期的年份。从那里你应该能够将键设置为你想要的任何格式。