IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tri de date dans tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut Tri de date dans tableau
    Bonjour à tous,

    Voici mon problème, j'ai un tableau avec des dates et je souhaiterai le trier correctement.
    Voici mon premier tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Array
    (
        [0] => 15-12-2014
        [1] => 31-01-2015
        [2] => 19-12-2014
        [3] => 10-12-2014
        [4] => 12-01-2015
        [5] => 02-02-2015
        [6] => 27-02-2015
        [7] => 31-12-2015
        [8] => 30-01-2015
        [9] => 26-02-2015
        [10] => 31-01-2015
        [11] => 15-12-2014
        [12] => 31-01-2015
        [13] => 09-01-2015
        [14] => 31-12-2014
        [15] => 31-01-2015
    )
    En utilisant la fonction array_multisort($date_end, SORT_ASC,$arr ), j'utilise array_multisort car mon tableau est un tableau multidimension avec un nom, prénom et une date de cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Array
    (
        [0] => Array
            (
                [0] => Name
                [1] => Firstname
                [2] => 15-12-2014
            )
     
        [1] => Array
            (
                [0] => Name
                [1] => Firstname
                [2] => 31-01-2015
            )
    )
    J'ai ce résultat après le array_multisort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Array
    (
        [0] => 02-02-2015
        [1] => 09-01-2015
        [2] => 10-12-2014
        [3] => 12-01-2015
        [4] => 15-12-2014
        [5] => 15-12-2014
        [6] => 19-12-2014
        [7] => 26-02-2015
        [8] => 27-02-2015
        [9] => 30-01-2015
        [10] => 31-01-2015
        [11] => 31-01-2015
        [12] => 31-01-2015
        [13] => 31-01-2015
        [14] => 31-12-2014
        [15] => 31-12-2015
    )
    Quelqu'un à une idée pour trier correctement ?
    D'avance merci pour vos réponses

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Bonjour,
    ton tri prends en compte les valeurs dans l'ordre qu'elles arrivent (01-10-2013 avant 02-09-2012)
    il serait utile de re-écrire d'abord ton tableau $a pour mettre l'année en premier dans l'ordre de tri (puis le mois, puis le jour)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(stristr($a, "-")!=false){ //vérifie si aucune date au format 01(/)01(/)2015 par ex.
    		$a = explode('-', $a); //crée un tableau $a[0]=jour; $a[1]=mois; $a[2]=date; 
    		$a = array_reverse($a); //renverse ce tableau
    		$a = implode('-', $a); // re-écris le tableau initial dans l'ordre année/mois/jour
    	}

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Tu n'es pas obligé de réorganiser tes dates dans le tableau, tu peux juste le faire dans ta fonction de tri :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $array = array(
        array('tristan', 'dupont', '15-12-2014'),
        array('paul', 'dupond', '31-01-2015'),
        array('paul', 'dupond', '31-01-2014'),
        array('jacques', 'bertrand', '28-03-2012')
    );
     
    function dateIso($val) {
        return implode(array_reverse(explode('-', $val)));
    }
     
    usort($array, function($a, $b) {
        return dateIso($a[2]) > dateIso($b[2]);
    });
     
    var_dump($array);
    Ceci dit mon voisin du dessus à raison, il vaut mieux manipuler des dates au format ISO car selon si tu parles anglais ou français, les dates que tu utilises actuellement ne veulent pas dire la même chose !
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    Merci beaucoup pour votre aide, Effectivement en gardant le format Anglais ca fonctionne toute suite mieux

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème de tri de date dans un tableau croisée dynamique
    Par marcelisa2 dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2013, 13h45
  2. Date dans tableau croisé dynamique
    Par guyanais dans le forum Excel
    Réponses: 6
    Dernier message: 10/02/2009, 21h05
  3. Format date dans tableau croisé dynamique
    Par le_gueux90 dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2007, 11h27
  4. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  5. Tri de dates dans listview
    Par Le Djé dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/01/2006, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo