是否删除php数组中过去的日期?

是否删除php数组中过去的日期?,php,arrays,Php,Arrays,努力让我的头脑清醒过来 $dates\u list输出此数组 Array ( [0] => Array ( [0] => Array ( [event_date] => 2020-11-19 00:00:00 [event_start_time] => 13:07:00 [e

努力让我的头脑清醒过来

$dates\u list
输出此数组

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [event_date] => 2020-11-19 00:00:00
                    [event_start_time] => 13:07:00
                    [event_end_time] => 17:07:00
                )

            [1] => Array
                (
                    [event_date] => 2020-06-17 00:00:00
                    [event_start_time] => 10:07:00
                    [event_end_time] => 17:07:00
                )

            [2] => Array
                (
                    [event_date] => 2020-03-05 00:00:00
                    [event_start_time] => 15:46:00
                    [event_end_time] => 20:46:00
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [event_date] => 2020-07-07 00:00:00
                    [event_start_time] => 20:10:00
                    [event_end_time] => 20:10:00
                )

            [1] => Array
                (
                    [event_date] => 2020-03-13 00:00:00
                    [event_start_time] => 20:10:00
                    [event_end_time] => 20:10:00
                )

        )

)
我已经创建了显示当前日期和时间的
$now

$now = date("Y-m-d h:i:s");
// 2020-03-12 09:17:42
@RoboRobok提供了这个答案,它在数组没有嵌套的情况下工作

$dates_filtered = array_filter($dates_list,
            function ($date_entry) use ($now) {
                return $date_entry['event_date'] >= $now;
            }
        );
如何访问嵌套数组以从数组中删除过去的天数?

试试这个

foreach($dates_list as $i=>$dateItem){
   if (strtotime($dateItem['event_date']) < time()) {
    // past date
    unset($dates_list[$i]);
}

}
print_r($dates_list);
foreach($dates\u列表为$i=>$dateItem){
if(strotime($dateItem['event_date'])
使用:

$result=array\u过滤器(
$dates\u列表,
函数($date\u entry)使用($now){
$date=substr($date\u entry['event\u date'],0,10);
$time=$date\u条目['event\u start\u time'];
返回“$date$time”>=$now;
}
);

Welcome,要提高您在上的体验,请阅读,然后查看,如何创建,谢谢!如果它也能考虑到时间的话,它可能会很有用。更新为使用
事件\u开始\u时间
.Lol。为什么这是公认的答案?如何使用substr表示日期?如果日期格式不同,这段代码就不起作用。@RafiqueMohammed我相信有时做出安全的假设是很重要的。这就是其中之一。大多数数据库系统都以这种格式存储日期时间,可以假设这就是要使用的格式。请记住,我假设您是一名非常年轻的程序员——有时候简单是一条路,但您确实需要小心。另一件事——有时假设会使代码更安全,因为解析某些内容时会出错,而不允许使用多种格式。您的数据可能会有更多的客户端,因此格式越一致越好。谢谢,这很有效,但是
print\r($dates\u list)显示所有的
foreach
循环。只有最后一个循环显示删除了过去日期的数组@Robo Robok answer只输出删除了过去日期的数组。@StephenMeehan我只是在没有测试的情况下键入了代码。多次打印的原因是bcz i在{..}括号内添加了打印。我已经更新了代码。数组$dates_列表将有更新的日期,但没有过去的日期。我想知道你怎么没弄明白?打印\r用于打印阵列。我添加它是为了演示。否决票是没有意义的。此人应添加否决投票的原因。