循环过去的日期并在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;
}
);
很好!谢谢很好!谢谢