从单独的变量创建多维数组

时间:2013-12-09 14:23:12

标签: php arrays

我有许多变量存储该月的年,月和一系列日期(其中有2个单独的月份)。然后我需要将这些结合到我认为是多维数组(之前没有使用过这些类型的数组)中。这是我的代码,其中包含变量:

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


    $month1 = date('m');
    $year1 = date('Y');
    $dates1 = '3 5 6 10 12 13 17 19 20 24 26 27 31';

    $month2 = date('m', strtotime('first day of next month')) ;
    $year2 = date('Y', strtotime('first day of next month')) ;
    $dates2 = '10 15 26';

使用2013年12月10日作为当前日期和上面的日期列表,我需要以这种格式结束数组:

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

看起来像这样:

$daysArray = array ("2013" => array("12" => array(3,5,6,10,12,13,17,19,20,24,26,27,31)), "2014" => array("1" => array(10,15,26)));

我不确定如何将这6个变量转换为多维数组?

2 个答案:

答案 0 :(得分:0)

您可以使用explode

从字符串创建数组
$daysArray = array($year1 => $month1 => explode(' ', $dates1), $year2 => $month2 => explode(' ', $dates2));

答案 1 :(得分:0)

考虑到一些边缘情况(同年等),我认为这是一个相当简单(可读)的解决方案:

// Sample data
$month1 = 12;
$year1 = 2013;
$dates1 = '3 5 6 10 12 13 17 19 20 24 26 27 31';

$month2 = 1;
$year2 = 2014;
$dates2 = '10 15 26';


$result = combineDateArrays(createDateArray($year1, $month1, $dates1), createDateArray($year2, $month2, $dates2));

function createDateArray($year, $month, $dates) {
    return array($year=>array($month=>explode(" ", $dates)));
}

function combineDateArrays($dateArray1, $dateArray2) {
    foreach($dateArray2 as $year=>$months) {
        foreach($months as $month=>$days) {
            if (!isset($dateArray1[$year])) $dateArray1[$year] = array();
            $dateArray1[$year][$month] = $days;
        }
    }

    return $dateArray1;
}