Ergens maak ik een denkfout, de volgende constructie leek me zo voor de hand liggend. Waarom werkt het niet en hoe los ik dat (simpel) op?

<?php
$maanden=array(
01=>januari,
02=>februari,
03=>maart,
04=>april,
05=>mei,
06=>juni,
07=>juli,
08=>augustus,
09=>september,
10=>oktober,
11=>november,
12=>december
);

$test="04";
$maand=$maanden[$test];
echo "maand: " . $maand; //waarom werkt dit niet?
?>

$maanden[04] werk namelijk wel.


wat is er mis met strftime()?
Wat wil je bereiken?

Dit werkt gewoon.
<?php
$maanden=array(
'01'=>'januari'
);

$test='01';
$maand=$maanden[$test];
echo "maand: " . $maand;
?>
Geweldig, in no-time al antwoorden. Bedankt daarvoor.

Kennelijk moet ik de waarden tussen 'apostrofs' zetten. Nu werkt het wel. strftime zal ik ook eens naar kijken, ken ik nog niet.

Het doel is om een datum uit sql in leesbaarder Nederlands te zetten. Verder was dat prima gelukt maar net dit stukje heeft me een paar uur prakkiseren gekost. Bedankt voor de antwoorden.
Daar is strftime() dus voor.
Gewoon een datum erin knallen en je krijgt alles.
Zelfs maandag 27 februari 2009, met 1 regel php.

Vergeet setlocale() echter niet.
Dank, ik heb er net naar gekeken. Voor een volgende keer ga ik dat waarschijnlijk wel gebruiken, dit werkt nu en dat laat ik maar zo dan.

Een beetje intro in arrays vond ik ook niet fout voor mezelf :-)
Ik heb ondertussen wat gespeeld met die strftime en wil graag Eddy nog even bedanken voor de goede tip. (Zonder SanThe te kort willen doen voor het gevraagde antwoord).
Kun je je code ook even posten. Dan hebben andere mensen met hetzelfde probleem gelijk een oplossing (als ze zoeken...)
<?php
setlocale(LC_ALL, 'nl_NL'); // ergens in config.php oid

echo "maand: " . strftime("%B");
?>

Dat is al. Waarom moeilijk doen met arrays.
En bjorri: graag gedaan. Veel werk is al gedaan door php of anderen... ga dat niet zelf opnieuw uitvinden.
Wil je de maand met/zonder hoofdletter: gebruik strtolower() of ucfirst().
Welke: is afhankelijk van je setlocale(). In het nederlands krijgen maanden niet standaard een hoofdletter, in het engels wel.
met alleen:
setlocale(LC_ALL, 'nl_NL');
ben je er niet!

Je doet er verstandig aan om dan alle bekende variaties van 'nl_NL' op te geven.

Het is namenlijk geheel OS afhankelijk..........

Reageren