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 :

Trier un array d'objets par un de leurs attribut


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Trier un array d'objets par un de leurs attribut
    Bonjour
    j'aimerais trier un array d'objets par l'un de leurs attributs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $topics = $forum_manager->get_topics();
    la fonction get_topics charge 20 objets topic dans l'array $topics

    Chaque objet topic possède une fonction get_time_last_answer() qui renvoie un temps (en secondes).

    Comment faire pour que l'array $topics soit trié en fonction de l'objet qui a la plus petite time_last_answer à celui qui a la plus grande (donc ordre croissant) ?

    J'espère avoir été assez clair, demandez moi si vous n'avez pas compris ma reqûete.
    Merci beaucoup d'avance pour vos réponses !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Utilise usort en utilisant une fonction de comparaison qui compare la valeur de get_time_last_answer()

    Du genre (non testé)
    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
    20
    21
    <?php
     
    $topics = $forum_manager->get_topics();
     
    usort($topics, function($left, $right) {
     
        if($left->get_time_last_answer() == $right->get_time_last_answer()) {
            return 0;
        }
     
       if($left->get_time_last_answer() > $right->get_time_last_answer()) {
            return 1;
       }
     
       else {
            return -1;
       }
     
    });
     
    //$topics est maintenant trié

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Utilise usort en utilisant une fonction de comparaison qui compare la valeur de get_time_last_answer()

    Du genre (non testé)
    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
    20
    21
    <?php
     
    $topics = $forum_manager->get_topics();
     
    usort($topics, function($left, $right) {
     
        if($left->get_time_last_answer() == $right->get_time_last_answer()) {
            return 0;
        }
     
       if($left->get_time_last_answer() > $right->get_time_last_answer()) {
            return 1;
       }
     
       else {
            return -1;
       }
     
    });
     
    //$topics est maintenant trié

    Super merci beaucoup à toi c'est exactement ce que je voulais et ça marche niquel !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/05/2012, 11h18
  2. trier un tableau d'objets par ordre alphabétique
    Par lhapaipai dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/09/2010, 17h25
  3. Classer un Array d'objets ActiveRecord par created_at
    Par pada51 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 25/10/2008, 12h10
  4. Tri d'objets par l'un des attributs des objets
    Par womannosky dans le forum Général Java
    Réponses: 5
    Dernier message: 27/01/2008, 19h29
  5. [ JSP ][ Débutant ] Passage d'objet par un forward
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/04/2004, 10h33

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