-1

我只想用一个月的日期制作一个数组。所以日期最多从 1 到 31 开始。

显而易见的方式,我知道是手动方式:

$date_array = array( '1', '2', '3', '4', '5', '6', '7', ..., '31' );

但我正在寻找一种自动化的方式,比如简单的for loop,让我成为我想要的自动生成的日期:

for($Idx=1;$Idx<32;$Idx++) {
  var_dump($Idx);
}

只需要将它们放在一个数组中。

想像力

$my_date_array = makeArray( $Idx );

makeArray() - 哈哈!:)

可能的?

4

4 回答 4

6

用这个:

function makeArray ($calendar, $month, $year) { 
   return range (1, cal_days_in_month ($calendar, $month, $year));
}

例子

$aMyArray = makeArray (CAL_GREGORIAN, 8, 2003);

参考

  • 范围 array range ( mixed $start , mixed $end [, number $step = 1 ] )
  • cal_days_in_month int cal_days_in_month ( int $calendar , int $month , int $year )
于 2013-07-17T10:24:39.313 回答
1
$date = time(); // A Unix timestamp, so for example 'strtotime("2013-01-01")'.
$array_of_days_in_month = range(1, date("t", $date));

date("t")将返回给定月份的天数。

于 2013-07-17T10:19:40.000 回答
0

使用范围()

$data = range(1,31);
于 2013-07-17T10:18:31.900 回答
0
function makeArray() {
    $months = array(31,28,31,30,31,30,31,31,30,31,30,31);
    $array = array();
    foreach($months as $month) {
        $array = array_merge($array, range(1, $month));
    }
    return $array;
}

这个函数考虑到每个月有不同的天数。不过要注意闰年!

如果你从今年开始需要这个,就用这个。它会为您处理闰年!

function makeArray() {
    $array = array();
    for($month = 0; $month < 12; $month++) {
        $array = array_merge($array, range(1, date("t", mktime(0, 0, 0, $month, 1)));
    }
    return $array;
}
于 2013-07-17T10:23:13.450 回答