Month array

Hi,

I would like to make an array that will check which month and year it currently is, and then make a list with all months and years since august 2013.

I had originally written this:

<?php $i_aar = "2013"; $i_maan = 1; $maan = date("m"); $aar = date("Y"); $array = array(); while($i_aar <= $aar){ while($i_maan <= $maan){ if($i_aar == "2013" AND $i_maan > "7" OR $i_aar > "2013"){ if($i_maan == "1"){ $maannavn = "Januar"; } elseif($i_maan == "2"){ $maannavn = "Februar"; } elseif($i_maan == "3"){ $maannavn = "Marts"; } elseif($i_maan == "4"){ $maannavn = "April"; } elseif($i_maan == "5"){ $maannavn = "Maj"; } elseif($i_maan == "6"){ $maannavn = "Juni"; } elseif($i_maan == "7"){ $maannavn = "Juli"; } elseif($i_maan == "8"){ $maannavn = "August"; } elseif($i_maan == "9"){ $maannavn = "September"; } elseif($i_maan == "10"){ $maannavn = "Oktober"; } elseif($i_maan == "11"){ $maannavn = "November"; } elseif($i_maan == "12"){ $maannavn = "December"; } $array["$i_aar-$i_maan"] = "$maannavn $i_aar"; } $i_maan++; } $i_maan = 1; $i_aar++; } $array = array_reverse($array); while (list($key, $value) = each($array)) { echo "$value"; } ?>

$maannavn contains the Danish name for the months.

It worked in December 2013, but for some reason it will only show Januar 2014 (January 2014) now. What did I do wrong?

You are declaring $I_maan =1 so the month will always print as January. That needs to be a validated input if it will change. I would also recommend changing this to a switch statement, it is cleaner and you gain nothing by using ifs in this case.

I would perhaps do it something like this. Haven’t played around with it much though, so might be big room for improvement…

[php]<?php

$months = array(’’, ‘Januar’, ‘Februar’, ‘Marts’, ‘April’, ‘Maj’, ‘Juni’, ‘Juli’, ‘August’, ‘September’, ‘Oktober’, ‘November’, ‘December’);

$start_date = DateTime::createFromFormat(‘Y-m-d’, ‘2013-08-01’);
$end_date = new DateTime();
$interval = new DateInterval(“P1M”);
$dates = new DatePeriod($start_date, $interval, $end_date);

$result = array();
foreach($dates as $dt) {
$key = $dt->format(‘Y’) . ‘-’ . $dt->format(‘n’);
$result[$key] = $months[$dt->format(‘n’)] . ’ ’ . $dt->format(‘Y’);
}

$result = array_reverse($result);
foreach ($result as $key => $value) {
echo “$value”;
}
[/php]

Output:[code]Januar 2014

December 2013 November 2013 Oktober 2013 September 2013 August 2013[/code]
Sponsor our Newsletter | Privacy Policy | Terms of Service