簡體   English   中英

PHP獲取包含年,月和日的數組,並指定開始和結束日期

[英]PHP Getting array with years, months and dates given a start and end date

我陷入了PHP函數中:給定開始日期(例如2011-11-25)和結束日期(例如2011-03-18),我想獲得一個包含年>月>日期的數組像這樣:

Array
(
    [2010] => Array
        (
            [11] => Array
                (
                    [0] => 25
                    [1] => 26
                    [2] => 27
                    [3] => 28
                    [4] => 29
                    [5] => 30
                )

            [12] => Array
                (
                    [0] => 01
                    [1] => 02
                    [2] => 03
                    [3] => 04
                    [4] => 05
                    [5] => 06
                    [6] => 07
                    [7] => 08
                    [8] => 09
                    [9] => 10
                    [10] => 11
                    [11] => 12
                    [12] => 13
                    [13] => 14
                    [14] => 15
                    [15] => 16
                    [16] => 17
                    [17] => 18
                    [18] => 19
                    [19] => 20
                    [20] => 21
                    [21] => 22
                    [22] => 23
                    [23] => 24
                    [24] => 25
                    [25] => 26
                    [26] => 27
                    [27] => 28
                    [28] => 29
                    [29] => 30
                    [30] => 31
                )

        )

    [2011] => Array
        (
            [01] => Array
                (
                    [0] => 01
                    [1] => 02
                    [2] => 03
                    [3] => 04
                    [4] => 05
                    [5] => 06
                    [6] => 07
                    [7] => 08
                    [8] => 09
                    [9] => 10
                    [10] => 11
                    [11] => 12
                    [12] => 13
                    [13] => 14
                    [14] => 15
                    [15] => 16
                    [16] => 17
                    [17] => 18
                    [18] => 19
                    [19] => 20
                    [20] => 21
                    [21] => 22
                    [22] => 23
                    [23] => 24
                    [24] => 25
                    [25] => 26
                    [26] => 27
                    [27] => 28
                    [28] => 29
                    [29] => 30
                    [30] => 31
                )

            [02] => Array
                (
                    [0] => 01
                    [1] => 02
                    [2] => 03
                    [3] => 04
                    [4] => 05
                    [5] => 06
                    [6] => 07
                    [7] => 08
                    [8] => 09
                    [9] => 10
                    [10] => 11
                    [11] => 12
                    [12] => 13
                    [13] => 14
                    [14] => 15
                    [15] => 16
                    [16] => 17
                    [17] => 18
                    [18] => 19
                    [19] => 20
                    [20] => 21
                    [21] => 22
                    [22] => 23
                    [23] => 24
                    [24] => 25
                    [25] => 26
                    [26] => 27
                    [27] => 28
                )

            [03] => Array
                (
                    [0] => 01
                    [1] => 02
                    [2] => 03
                    [3] => 04
                    [4] => 05
                    [5] => 06
                    [6] => 07
                    [7] => 08
                    [8] => 09
                    [9] => 10
                    [10] => 11
                    [11] => 12
                    [12] => 13
                    [13] => 14
                    [14] => 15
                    [15] => 16
                    [16] => 17
                    [17] => 18
                )

        )

)

在谷歌搜索中,我發現了一個獲取包含>年的數組的函數:

function get_months($startstring, $endstring) {
    $time1 = strtotime($startstring);
    $time2 = strtotime($endstring);
    $year1 = date('Y', $time1);
    $year2 = date('Y', $time2);
    $years = range($year1, $year2);

    foreach ($years as $year) {
        $months[$year] = array();
        while ($time1 < $time2) {
            if (date('Y', $time1) == $year){
                $month = date('m', $time1);
                $months[$year][$month] = array();

                $time1 = strtotime(date('Y-m', $time1).' +1 month');
            } else {
                break;
            }
        }
    }
    return $months;
}

// ----------------------------------------------------------------

foreach(array_keys($montharr) as $year){
    foreach($montharr[$year] as $month){
        print "{$year}-{$month}<br>";
    }
}

但是我也不知道如何實施幾天

請幫忙嗎?

您可以使用以下功能:

<?php
function generateDates($start, $end)
{
  $result = [];

  while ($start <= $end) {
    $result[$start->format('Y')][$start->format('m')][] = $start->format('d');
    $start->add(new DateInterval('P1D'));
  }

  return $result;
}

$start = new DateTime('2010-11-03');
$end = new DateTime('2012-01-15');

print_r(generateDates($start, $end));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM