[英]php Add numbers cumulatively from array to date
我有数字数组,没有序列化键。 并有个约会。 如何添加具有数组值累积的日期?
我将 function 与 foreach{} 一起使用,并像这样添加日期:
$nextDate[] = date("Y-m-d", strtotime('+'.$g.' day', strtotime($aDate)));
数据是:
$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'
];
我想退出,但我希望数组首先成为 id=date+current days,然后成为 id=prevdate+current days
像那样
$result=[
//'4'=>'1',
'4'=>'2019-01-02',// $date+1
//'6'=>'2',
'6'=>'2019-01-04',//previous result + 2
//'8'=>'5',
'8'=>'2019-01-09',//previous result + 5
//'20'=>'2',
'20'=>'2019-01-11',//previous result + 2
//'54'=>'6',
'54'=>'2019-01-17',//previous result + 2
//'62'=>'4',
'62'=>'2019-01-21',//previous result + 4
//'64'=>'1',
'64'=>'2019-01-22',//previous result + 1
//'65'=>'1',
'65'=>'2019-01-23',//previous result + 1
//'68'=>'1',
'68'=>'2019-01-24',//previous result + 1
//'70'=>'1',
'70'=>'2019-01-25',//previous result + 1
//'78'=>'20'
'78'=>'2019-02-14',//previous result + 20
];
这里是 go。 我传递了日期 object,这是通过引用,因此它会在我们添加到它时修改 object。
$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 object $dateTime 在每个周期通过 modify 方法进行更改。 以下格式方法不会改变这一点,只会返回新数组值所需的日期字符串。
//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>";
Output
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',
)
注意:通过 var_export 的输出可以被复制并简单地用作 php 源代码以进行进一步测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.