如何在foreach循环中从数组格式化字符串到日期?

时间:2019-02-23 00:44:05

标签: php multidimensional-array

我有以下代码可与预格式化的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次的日期。

1 个答案:

答案 0 :(得分:2)

您可以使用DateTime的{​​{1}}将这些值转换为createFromFormat()值。

DateTime

DateTime::createFromFormat('Y-m-d', '2019-02-18');

希望这会有所帮助