PHP条件组合数组

PHP条件组合数组,php,arrays,Php,Arrays,我在当前月份的一个天数数组中循环,以生成另一个当天或之后的天数数组。下个月我也在做同样的事情(总是包括当前日期之后的所有日子) 复杂性在于下一个月与当前月份处于不同的年份。最终数组的格式如下所示: array("year" => array("month" => array(days))); $allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,2,3,4,5,6,7,

我在当前月份的一个天数数组中循环,以生成另一个当天或之后的天数数组。下个月我也在做同样的事情(总是包括当前日期之后的所有日子)

复杂性在于下一个月与当前月份处于不同的年份。最终数组的格式如下所示:

array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,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)));
$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)), "2014" => array("1" => array(1,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) )) ;
当两个月都在同一年时,可能是这样的:

array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,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)));
$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)), "2014" => array("1" => array(1,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) )) ;
当两个月在不同的年份(即12月和1月)时,可能如下所示:

array("year" => array("month" => array(days)));
$allDays = array("2013" => array( "11" => array(28,29,30), "12" => array(1,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)));
$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)), "2014" => array("1" => array(1,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) )) ;
以下是生成当前月份和下个月日期列表的代码:

// Set the default timezone
    date_default_timezone_set('Australia/Sydney');

    // Get days for current month
    $day = date("Y-m-d");
    $i = strtotime($day);

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

    // Get days for next month

    $day2 = date("Y-m-d", strtotime('first day of next month')) ;
    $i2 = strtotime($day2);

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

如果它们在同一年或不在同一年,我不知道如何使用不同的sytanx将它们组合到1数组中?

您可以使用
isset
功能检查数组中是否已经存在该年的条目:

改变这个

$day2 = date("Y-m-d", strtotime('first day of next month')) ;
$i2 = strtotime($day2);

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


例如,
数组中的天数是多少(“年”=>数组(“月”=>数组(天))
?你甚至没有使用那一行。这似乎对日期使用非字符串表示会更容易。像
时间戳
这样的顺序,那么它只是一个来回格式化的问题。