Noms des mois en php

Toi le programmeur PHP qui, comme moi, t'embête à faire un long et fastidieux tableau à chaque fois que tu veux gérer des dates et leur affichage, oui toi qui écris à la main quelque chose d'horrible et ennuyeux qui ressemble à cela :

$mois['01']='Janvier';   $mois['02']='Février';
$mois['03']='Mars';      $mois['04']='Avril';
$mois['05']='Mai';       $mois['06']='Juin';
$mois['07']='Juillet';   $mois['08']='Aout';
$mois['09']='Septembre'; $mois['10']='Octobre';
$mois['11']='Novembre';  $mois['12']='Décembre';

Je viens aujourd'hui pour te libérer et te faire part de ma trouvaille :o

for($i=1;$i<=12;$i++)

{
	$mois[$i]=date("F", mktime(0, 0, 0, $i, 1, 2005));
}

Voila, c'est tout... mais ça soulage 8~

Ici ça récupère le nom complet et en anglais mais on peut s'amuser à récupérer un peu tout ce qu'on veut (numéro, nom abrégé, etc.) sur le même modèle, en suivant la doc de la fonction date :) Par exemple pour un tableau similaire au premier :

for($i=1;$i<=12;$i++)
{
	$mois_num=date("m", mktime(0, 0, 0, $i, 1, 2005));
	$mois_nom=date("F", mktime(0, 0, 0, $i, 1, 2005));
	$mois[$mois_num]=$mois_nom;
}

Et toi, programmeur PHP qui utilisais déjà quelque chose du genre... épargne-moi donc tes sarcasmes, tu seras gentil :D

Edit - Les noms en Français

Afin de faciliter la vie à vos visiteurs, il peut être préférable d'avoir les noms des mois dans leur langue, voila donc la version pour avoir les noms en français :

setlocale(LC_TIME,"fr");
for($i=1;$i<=12;$i++)
{
	$mois[$i]=strftime("%B", mktime(0, 0, 0, $i, 1, 2005));
}

pour plus d'information sur les locales (en fonction de votre système par exemple) référez-vous à la documentation de setlocale

Edit 2 - Complément sur les locales

Vous aurez certainement lu la doc jusqu'au bout et donc ne serez pas tombé dans le piège dans lequel je suis tombée :)
Mais bon, au cas où, voici un petit complément utile :8
Il se peut que d'un serveur à l'autre la chaine à utiliser ne soit pas la même, ce qui pose des problèmes lorsqu'on travaille en local puis qu'on uploade le script : pouf, setlocale ne fonctionne plus :/
En fait si ! Mais l'un prend "fr" lorsque l'autre prend "fr_FR" :grmpf:
Heureusement PHP 4.3.0 est arrivé B)
Et depuis son arrivée, on peut spécifier plusieurs chaines à tester et ainsi avoir une ligne de commande unique, quel que soit le serveur :

setlocale(LC_TIME, "fr", "french", "fra", "fr_FR", "fr_FR@euro");

Le serveur prend alors la première qu'il reconnait... Petite comparaison entre mon serveur local et mon hébergeur :
Serveur local : Windows - Apache 2 - PHP 5.0.4
locale retournée par la fonction : French_France.1252
fr -> oui
fr_FR -> non
fr_FR@euro -> non (logique)
fra -> oui
french -> oui

Hébergeur : Linux - Apache 1 - PHP 4.3.10
Locale retournée par la fonction : la chaine prise en compte par la fonction ("fr", "french", etc.)
fr -> non
fr_FR -> oui
fr_FR@euro ->oui (logique)
fra -> non
french -> oui