使用PHP从数组中删除过期日期

时间:2014-01-12 20:00:42

标签: php arrays date unset

我有一系列日期格式为'm / d / Y'(月/日/年):

$array = array(

'1/10/2014',
'1/11/2014',
'1/12/2014',
'1/13/2014',
'1/14/2014'
);

我想输出只有今天或将来日期的数组。因此,如果今天是2014年1月12日,它将消除2014年1月10日和2014年1月11日。

以下是我的工作原理:

foreach ($array as $date) {

 $unixdate = strtotime($date);

 if ($unixdate < time()) {

 unset($array[$date]);

 }

}

print_r($array);

我想我没有正确使用unset,因为它打印整个数组?

3 个答案:

答案 0 :(得分:5)

我建议你研究一下array_filter()。您还想在今天的12:00:00使用比较,而不是当前时间。

$array = array(
    '1/10/2014',
    '1/11/2014',
    '1/12/2014',
    '1/13/2014',
    '1/14/2014'
);

$array = array_filter($array,function($date){
    return strtotime($date) >= strtotime('today');
});

print_r($array); //Array ( [2] => 1/12/2014 [3] => 1/13/2014 [4] => 1/14/2014 )

*注意:匿名函数需要PHP 5.3

答案 1 :(得分:2)

尝试

foreach ($array as $key => $date) {

 $unixdate = strtotime($date);

 if ($unixdate < time()) {

 unset($array[$key]);

 }

}

print_r($array);

答案 2 :(得分:0)

foreach($ array as &amp; $ date)嗨使用引用调用和$ date = NULL;在循环中

OR

foreach ($array AS $key => $date) {

 $unixdate = strtotime($date);

 if ($unixdate < time()) {

    unset($array[$key]);

 }

}

如果您想完全删除这些条目