2014-07-13 4 views
-1

У меня есть массив строк даты:Фильтр массив дат строк с помощью array_filter

Array 
(
    [0] => 2014-03-24 
    [1] => 2014-03-18 
    [2] => 2014-06-08 
    [3] => 2014-08-21 
    [4] => 2014-09-11 
) 

Я хотел бы использовать функцию array_filter, чтобы отфильтровать все записи старше определенного месяца и года:

array_filter($array, "newer_than"); 

function newer_than($var) 
{ 
    return (strtotime($var) > CURRENT MONTH AND YEAR); 
} 

Любая помощь будет оценена

Благодаря

+1

Вы хотите отфильтровать записи до текущего времени? Используйте 'time()' вместо 'CURRENT MONTH AND YEAR'. – Barmar

ответ

3

strtotime() достаточно умен, чтобы получить UNIX метку времени текущего месяца:

$thisMonth = strtotime('first day of ' . date('F Y')); 

$array2 = array_filter($array1, function ($val) use ($thisMonth) { 
    return strtotime($val) > $thisMonth; 
}); 
1

Если вы хотите, чтобы указать месяц и год, которые не являются нынешние те, что вы можете сделать что-то вроде этого:

<? 
    $array[] = "2014-03-24"; 
    $array[] = "2014-03-18"; 
    $array[] = "2014-06-08"; 
    $array[] = "2014-08-21"; 
    $array[] = "2014-09-11"; 

    $array = array_filter($array, "newer_than"); 

    function newer_than($var) 
    { 
      $specificMonth = 8; 
      $specificYear = 2014; 

      return (strtotime($var) > mktime(0,0,0,$specificMonth,1,$specificYear)); 
    } 

    ?> 
Смежные вопросы