循环过去的日期并在php中删除

循环过去的日期并在php中删除,php,arrays,Php,Arrays,我有一个数组$primary\u dates,列出了即将到来的日期 其中两个在过去,一个在未来。我想删除过去的日期,只显示基于今天日期的未来日期 Array ( [0] => Array ( [event_date] => 2020-04-02 00:00:00 // PAST DATE [event_start_time] => 09:20:00 [event_end_time]

我有一个数组
$primary\u dates
,列出了即将到来的日期

其中两个在过去,一个在未来。我想删除过去的日期,只显示基于今天日期的未来日期

Array
(
    [0] => Array
        (
            [event_date] => 2020-04-02 00:00:00 // PAST DATE
            [event_start_time] => 09:20:00
            [event_end_time] => 09:20:00
        )

    [1] => Array
        (
            [event_date] => 2020-04-07 00:00:00 // PAST DATE
            [event_start_time] => 09:20:00
            [event_end_time] => 09:20:00
        )

    [2] => Array
        (
            [event_date] => 2020-12-18 00:00:00 // FUTURE DATE
            [event_start_time] => 09:20:00
            [event_end_time] => 09:20:00
        )

)
这是我的。它部分起作用,
$primary_dates
按相反的时间顺序重新排序。然后,如果数组中的第一个日期早于
$today\u timestamp
我运行
unset
删除第一个数组

// GET THE CURRENT DATE
$timestamp = strtotime(date("Y-m-d"));

// SORT DATES IN REVERSE CHRONOLOGICAL ORDER
usort($item['event_dates_1'], function ($a, $b) {
return strtotime($a['event_date']) > strtotime($b['event_date']);
});

$primary_dates = $item['event_dates_1'];

$latest_date = strtotime($primary_dates[0]['event_date']);


if ($today_timestamp > $latest_date) {
        unset($primary_dates[0]); // This removes the first date
        print_r($primary_dates);

        } else {
            print_r($primary_dates);
        }

当我在
$primary\u dates
数组上方运行代码时,如下所示:

Array
(
    [1] => Array
        (
            [event_date] => 2020-04-07 00:00:00 // PAST DATE
            [event_start_time] => 09:20:00
            [event_end_time] => 09:20:00
        )

    [2] => Array
        (
            [event_date] => 2020-12-18 00:00:00 // FUTURE DATE
            [event_start_time] => 09:20:00
            [event_end_time] => 09:20:00
        )

)
只有第一个日期被删除,我明白为什么,我只取消设置第一个数组。我需要删除所有过去的日期


如何循环数组并删除所有过去的日期?

使用
array\u filter
并比较
DateTime
对象:

$now = new \DateTime();
$newDates = array_filter(
    $item['event_dates_1'], 
    function($event) use ($now) {
        return $now < (new \DateTime($event['event_date']));
    }
);
print_r($newDates);
$now=new\DateTime();
$newDates=array\u过滤器(
$item['event_dates_1'],
函数($event)使用($now){
返回$now<(new\DateTime($event['event_date']);
}
);
打印(新日期);

.

使用
array\u filter
并比较
DateTime
对象:

$now = new \DateTime();
$newDates = array_filter(
    $item['event_dates_1'], 
    function($event) use ($now) {
        return $now < (new \DateTime($event['event_date']));
    }
);
print_r($newDates);
$now=new\DateTime();
$newDates=array\u过滤器(
$item['event_dates_1'],
函数($event)使用($now){
返回$now<(new\DateTime($event['event_date']);
}
);
打印(新日期);

.

您可以通过
array\u filter
执行此操作,如以下代码所示:

$now = time();
$filteredEvents = array_filter(
    $yourEventsArray,
    function ($event) use ($now) {
        return strtotime($event['event_date']) > $now;
    }
);

您可以通过
array\u filter
执行此操作,如以下代码所示:

$now = time();
$filteredEvents = array_filter(
    $yourEventsArray,
    function ($event) use ($now) {
        return strtotime($event['event_date']) > $now;
    }
);

很好!谢谢很好!谢谢