Array_merge et keys altérées

cs_mikro Messages postés 2 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 mars 2007 - 12 mars 2007 à 14:01
cs_mikro Messages postés 2 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 mars 2007 - 13 mars 2007 à 12:22
Bonjour

Dans le cas ci-dessous sous PHP5, la fonction array_merge semble ne pas conserver les keys, à partir de octobre, la key est remise à 0.
Cette fonction est destinée à fournir une liste glissante des mois à partir du mois en cours (ici fixé au mois de mars : offset= 3)

Bizarre, ou alors il y a un erreur que je ne vois pas.

$offset = 3;
$mois_base = array('01'=>'Jan','02'=>'Fev','03'=>'Mars','04'=>'Avr','05'=>'Mai','06'=>'Juin','07'=>'Juil','08'=>'Août','09'=>'Sept','10'=>'Oct','11'=>'Nov','12'=>'Déc');
$mois = array_merge(array_slice($mois_base, $offset,12,true),array_slice($mois_base,0,$offset,true));



Manifestement le array_slice  lui, fonctionne correctement

//...Controle
print_r($mois); //...KO
print_r(array_slice($mois_base, $offset,12,true)); //...OK

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 mars 2007 à 12:00
Hello,

ton array_slice est faux à priori. Le 3ème paramètre indique la LONGUEUR, à savoir le nombre d'enregistrements que tu vas récupérer.
Si tu pars de l'offset 3 (qui est le mois d'avril, les offset commençant à 0, au passage), et que tu découpes sur les 12 positions suivantes, tu sors de ton tableau.
0
cs_mikro Messages postés 2 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 mars 2007
13 mars 2007 à 12:22
Effectivement, ce paramètre est erroné, quoique à mon avis, si length dépasse la taille du tableau, il s'arrête à la fin du tableau
De toute manière cela ne vient pas de là pour 2 raisons :
La première c'est que le controle de array_slice retourne bien la valeur attendue, c'est donc array_merge qui pose Pb.
La seconde c'est qu'en mettant un paramètre cohérent Ex: 8, on a la même erreur.

Merci pour ton intérêt
0
Rejoignez-nous