我有以下代码可与预格式化的DateTime数组完美配合:
foreach ($ranges as $range) {
while ($range['start'] <= $range['end']) {
$date = $range['start']->format('Y-m-d');
$dates[$date] = (isset($dates[$date]) ? $dates[$date] : 0) + 1; 1;//define new $dates array
$range['start']->modify('+1 day');
}
}
$sold_out = array_filter($dates, function($n) { return $n >= 7; });
echo implode(',', array_keys($sold_out));
但是,我的生产数组未“预格式化”为DateTime
在链接的小提琴中,您可以看到我们正在链接到一个本地数组,其中值是“字符串” http://phpfiddle.org/main/code/zni4-enk5
这会产生' Exception:调用字符串上的成员函数format()'
在我们浏览日期的那一行上:
$ range ['start']-> modify('+ 1 day');
要测试将数组目标从$ ranges更改为$ ranges2:
示例: foreach(将$ ranges2作为$ range){
问题是无法正确将值设置为DateTime吗?
目标:输出逗号分隔的日期,这些日期共享一个在提供的日期范围内相交x次的日期。
答案 0 :(得分:2)
您可以使用DateTime
的{{1}}将这些值转换为createFromFormat()
值。
DateTime
DateTime::createFromFormat('Y-m-d', '2019-02-18');
希望这会有所帮助