最有效的方式来获得数年的数组

Lar*_*ars 3 php monthcalendar

从指定日期到现在,以年为单位获得数月的最有效方法是什么?

例如getMonths("August 2012")将输出

array(
    array("Year"=>"2013", "months" = array(
         "February", "January")
    ),
    array("Year"=>"2012", "months" = array(
         "December", "November","October", "September", "August")
    )
)
Run Code Online (Sandbox Code Playgroud)

到目前为止我有:

$start = strtotime('2012-08-01');
$end = time();
$month = $start;
$months[] = date('F', $start);
while($month <= $end) {
  $month = strtotime("+1 month", $month);
  $months[] = date('F', $month);
}
Run Code Online (Sandbox Code Playgroud)

这是输出正确的月份,但不是将它们分组为几年.谢谢

Bab*_*aba 11

你可以试试

function getMonths($month,$count = 1) {
    $now = new DateTime();
    $start = DateTime::createFromFormat("F Y", $month);
    $list = array();
    $interval = new DateInterval(sprintf("P%dM",$count));
    while ( $start <= $now ) {
        $list[$start->format("Y")][] = $start->format("F");
        $start->add($interval);
    }
    return $list;
}

print_r(getMonths("August 2012"));
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
    [2012] => Array
        (
            [0] => August
            [1] => September
            [2] => October
            [3] => November
            [4] => December
        )

    [2013] => Array
        (
            [0] => January
            [1] => February
        )

)
Run Code Online (Sandbox Code Playgroud)