php从数组到日期累加数字

php从数组到日期累加数字,php,arrays,date,cumulative-sum,Php,Arrays,Date,Cumulative Sum,我有一个带有数字的数组,没有序列化键。还有约会。如何添加具有数组值的日期 我将函数与foreach{}一起使用,并将日期添加为: $nextDate[]=dateY-m-d,strotime'+.$g.'day',strotime$aDate; 数据如下: $date='2019-01-01 00:00:00'; 美元天=[ //id=>天 '4'=>'1', '6'=>'2', '8'=>'5', '20'=>'2', '54'=>'6', '62'=>'4', '64'=>'1', '65'

我有一个带有数字的数组,没有序列化键。还有约会。如何添加具有数组值的日期

我将函数与foreach{}一起使用,并将日期添加为:

$nextDate[]=dateY-m-d,strotime'+.$g.'day',strotime$aDate; 数据如下:

$date='2019-01-01 00:00:00'; 美元天=[ //id=>天 '4'=>'1', '6'=>'2', '8'=>'5', '20'=>'2', '54'=>'6', '62'=>'4', '64'=>'1', '65'=>'1', '68'=>'1', '70'=>'1', '78'=>'20' ]; 我想出去,但像那样 我希望数组变成第一个id=日期+当前日期,然后变成下一个id=前一个日期+当前日期

那样

$result=[ //'4'=>'1', '4'=>'2019-01-02',//$date+1 //'6'=>'2', '6'=>'2019-01-04',//上一个结果+2 //'8'=>'5', '8'=>'2019-01-09',//上一个结果+5 //'20'=>'2', '20'=>'2019-01-11',//先前结果+2 //'54'=>'6', '54'=>'2019-01-17',//先前的结果+2 //'62'=>'4', '62'=>'2019-01-21',//上一个结果+4 //'64'=>'1', '64'=>'2019-01-22',//上一个结果+1 //'65'=>'1', '65'=>'2019-01-23',//上一个结果+1 //'68'=>'1', '68'=>'2019-01-24',//上一个结果+1 //'70'=>'1', '70'=>'2019-01-25',//先前结果+1 //'78'=>'20' '78'=>'2019-02-14',//先前结果+20 ];
给你。我正在传入date对象,它是通过引用传递的,因此在我们添加对象时它会修改该对象

$date = new DateTime('2019-01-01 00:00:00');
$days=[
    //id=>days
    '4'=>'1',
    '6'=>'2',
    '8'=>'5',
    '20'=>'2',
    '54'=>'6',
    '62'=>'4',
    '64'=>'1',
    '65'=>'1',
    '68'=>'1',
    '70'=>'1',
    '78'=>'20'
];

$result = array_map(function($days) use ($date) {
  $date->add(new DateInterval('P' . $days . 'D'));
  return  $date->format('Y-m-d');
}, $days);

print_r($result);

一个简单的foreach也可以做到这一点

DateTime对象$DateTime在每个周期中都由modify方法更改。下面的format方法不会改变这一点,只返回新数组值所需的日期字符串

//given
$date='2019-01-01 00:00:00';
$days=[
    //id=>days
    '4'=>'1',
    '6'=>'2',
    '8'=>'5',
    '20'=>'2',
    '54'=>'6',
    '62'=>'4',
    '64'=>'1',
    '65'=>'1',
    '68'=>'1',
    '70'=>'1',
    '78'=>'20'
];

//calculation
$dateTime = new DateTime($date);
foreach($days as $key => $day){
  $days[$key] = $dateTime->modify($day." Days")->format('Y-m-d');
}

//Test output
echo "<pre>".var_export($days,true)."</pre>";
注意:可以复制通过var_导出的输出,并将其作为php源代码用于进一步测试

array (
  4 => '2019-01-02',
  6 => '2019-01-04',
  8 => '2019-01-09',
  20 => '2019-01-11',
  54 => '2019-01-17',
  62 => '2019-01-21',
  64 => '2019-01-22',
  65 => '2019-01-23',
  68 => '2019-01-24',
  70 => '2019-01-25',
  78 => '2019-02-14',
)