从数组打印从数组到特定年份的月份

时间:2015-10-13 09:53:40

标签: php

目前我的$years数组如下所示:

$years = array('2013',
               '2014',
               '2015');

那将打印从1月到12月的所有月份。到那一年。但是说我想在2015年将jan打印到oct。然后我相信阵列必须看起来像这样:

$years = array('2013'=>array(1,2,3,4,5,6,7,8,9,10,11,12),
               '2014'=>array(1,2,3,4,5,6,7,8,9,10,11,12),
               '2015'=>array(1,2,3,4,5,6,7,8,9,10));

这样我就可以选择打印多少个月了......

但是当前的代码给了我错误:Notice: Array to string conversion in,代码如下所示:

$months = array(
             1=>'januari',
             2=>'februari',
             3=>'mars',
             4=>'april',
             5=>'maj',
             6=>'juni',
             7=>'juli',
             8=>'augusti',
             9=>'september',
             10=>'oktober',
             11=>'november',
             12=>'december');


$years = array('2013'=>array(1,2,3,4,5,6,7,8,9,10,11,12),
               '2014'=>array(1,2,3,4,5,6,7,8,9,10,11,12),
               '2015'=>array(1,2,3,4,5,6,7,8,9,10));

echo var_dump($years); //debug, seems right

$data = new stdClass;
foreach($years as $year){
    $data->$year = $months;
}

foreach($data as $year => $months) {
    echo '<b>Year: '.$year.'</b><br>';
    foreach($months as $month) {
        echo 'Month: '.$month.'<br>';
    }
}

我的问题是:如何在特定年份添加数月?

**2013**
jan
...
dec
**2014**
jan
...
dec
**2015**
jan
...
oct

1 个答案:

答案 0 :(得分:0)

您需要使用当年的密钥,目前您正在使用整个阵列。 这样的事情可以解决问题:

$data = new stdClass;
foreach($years as $year => $yearMonths){
    $data->$year = $yearMonths;
}

我还建议对数据打印进行一些改进

foreach($data as $year => $yearMonths) {
    echo '<b>Year: '.$year.'</b><br>';
    foreach($yearMonths as $month) {
        echo 'Month: '.$months[$month].'<br>';
    }
}

最后但并非最不重要 - 您不需要var_dump()

之前的回音

这是完整的工作http://ideone.com/4qnqzu