user982124 user982124 - 1 year ago 45
PHP Question

Generating a PHP Multidimensional array within a foreach loop

I'm looping through an array of days in the current month to generate another array of days that are on or after the current day. I then need to incorporate this into what I believe is a multidimensional array (haven't worked with these types of arrays before). Here's my code that generates the days of the month and compares each one to the current date to get my initial array:

// Set the default timezone
$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;

This is all working well so far - I now need to incorporate this array of days into an array in this format:

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

For example for the 2nd of Dec, 2013 it would look like this:

$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)));

I'm not sure how to insert my array of days into a large multidimensional array?

Answer Source

Access to multidimension array can use nested [], eg:

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

I may have a simpler code for your example:


$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'))),


Hope this is helpful to you.