我有一个包含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')
答案 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年是创建日期的年份。从那里你应该能够将键设置为你想要的任何格式。