在foreach循环中生成PHP多维数组

时间:2013-12-02 12:28:31

标签: php arrays

我正在循环显示当月的一系列天数,以生成当天或之后的另一个天数。然后我需要将其合并到我认为是多维数组(之前没有使用过这些类型的数组)中。这是我的代码,它生成每月的日期,并将每个日期与当前日期进行比较,以获得我的初始数组:

// Set the default timezone
date_default_timezone_set('Australia/Sydney');
$today = date("j");
$firstDayCurrentMonth = date("Y-m-01");

// Get number of days in current month
$days = date("t");
// echo $days;

// Get array of all dates in current month
$aDates = array();
$oStart = new DateTime($firstDayCurrentMonth);
$oEnd = clone $oStart;
$oEnd->add(new DateInterval("P1M"));

while($oStart->getTimestamp() < $oEnd->getTimestamp()) {
    $aDates[] = $oStart->format('j');
    $oStart->add(new DateInterval("P1D"));
}                           

// Setup days array
$days = array();    

// Generate $linked_days array to feed into calendar files 
foreach($aDates as $date) {
    if($date >= $today) {
        $days[] = $date;
    }                    
}

到目前为止,这一切都运行良好 - 我现在需要将这一天数组合成这种格式的数组:

array("year" => array("month" => array(days)));

例如,对于2013年12月2日,它将如下所示:

$allDays = array("2013" => array("12" => array(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)));

我不确定如何将我的数组插入大型多维数组?

1 个答案:

答案 0 :(得分:2)

访问多维数组可以使用嵌套的[],例如:

$allDays['2013']['12'] = array(...);

我的代码可能有一个更简单的代码:

<?php

$day = '2nd Dec, 2013';
$i = strtotime($day);

array("year" => array("month" => array(days)));
$allDays = array(
    date('Y', $i) => array(
        date('m') => range(date('d', $i), intval(date('t'))),
    ),
);

var_dump($allDays);

希望这对你有所帮助。