traitement array associatif

Invité
Invité n'ayant pas de compte PHPfrance

06 févr. 2008, 17:21

Bonjour à tous,

J'ai un tableau associatif $user qui ressemble à ceci:
array(50) {
  ["idfiche"]=>
  string(1) "1"
.....
  ["dateinsc"]=>
  string(10) "2008-02-06"
  ["dateschoisies"]=>
  string(31) "14 février 2008  au 13 Mai 2008"
....
}
Comme vous pouvez le voir certaines valeurs du tableau contiennent des dates au format "aaaa-jj-mm". Je voudrais changer le format de ces dates avec la fonction suivante (pour obtenir des dates françaises)
function do_date($date)
{
    /* Format de date dans la base : 2005-02-28 00:00:00 */
    if(!empty($date))
    {
        $masque = "#(\d{4})-(\d{2})-(\d{2})#";
        $rempl  = "$3/$2/$1";
        $date_fr = preg_replace($masque, $rempl, $date);
    }
    else
    {
        $date_fr = "";
    }
    return $date_fr;
}
La fonction do_date(param) marche très bien. Pour l'appliquer à toutes les valeurs de mon tableau $user, j'ai pensé à array_map(), comme ceci:
$user = array_map("do_date", $user);
Mon problème: ma fonction do_date doit prendre la date à traiter en paramètre. Est-il possible de passer des paramètres à 1 fonction en utilisant array_map?
éventuellement, y a til une meilleure solution pour atteindre mon but?

Merci pour vos réponses.

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 15:19

haouais, c le blizzard là...une autre question: ma question est elle bête ou impossible à solutionner?

ViPHP
ViPHP | 2144 Messages

07 févr. 2008, 15:22

Je ne comprends pas: tu veux faire traiter tout ton tableau user par cette fonction, mais ce tableau ne ocntient pas que des dates, non ?

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 15:51

non, le tableau ne comprend pas que des dates

Eléphant du PHP | 259 Messages

07 févr. 2008, 15:58

Hello,

Il y a deux problèmes à ton affaire :

1) l'idée est mauvaise à la base. les dates au format Y-m-d, PHP sait les traiter, il peut faire plein de trucs amusants avec. Les dates au format Fr, il peut rien en faire par contre. Donc il est plus intéressant de les garder tant que possible dans le format d'origine, et les transformer en Fr que lorsque tu les affiches.

2) la méthode de transformation des dates est mauvaise. Comme dit dans le §1, PHP sait traiter ce format de date. Tu peux le transformer facilement pour l'affichage de cette maniere :
$date_transformée = date( 'd/m/Y' , strtotime( $date_d_origine ) );
Donc on oublie l'utilisation d'array_map, qui est fondé sur une mauvaise idée.

Ceci était bien sûr un avis qui n'engageait que moi :) Mais j'espère qu'il te rendra un quelconque service.