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 :

[Tableaux] Classer un array d'objets


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut [Tableaux] Classer un array d'objets
    Bonjour,

    J'ai beau chercher, je ne trouve pas de fonction me permettant de classer un array contenant des objets selon une méthode.

    En gros j'aimerais pour tous les objets de mon array comparer la valeur retournée par l'appel d'une méthode val($a) et classer de manière croissante par rapport à cette valeur. Y'a t'il un moyen simple de faire ça?

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    usort() devrait correspondre a ce que tu cherches

  3. #3
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    J'ai bien vu cette fonction là, mais elle semble être typée comme une fonction prenant deux paramètres $a et $b, or moi c'est l'objet de mon array qui prend un autre objet en paramètre, comment je peux appliquer ça ?

    Parce que si je fais ça , je vois pas trop comment décrire ma définition:


  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    c'est clairement ce que montre l'exemple 1 de la documentation. Le deuxieme paramètre correspond au nom d'une fonction de comparaison qui prend en paramètre deux éléments de ton tableau et définit comment les comparer.

    Tu reprends exactement l'exemple et tu changes la manière de comparer qui devient plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function compare($a, $b) 
    {
        if ($a->valeur == $b->valeur) {
          return 0;
        }
        return ($a->valeur > $b->valeur) ? -1 : 1;
    }

  5. #5
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Ah oui j'étais resté sur l'appel de ma méthode, et non pas recoder une fonction pour se faire.

    Oki, par contre en terme de perf, c'est pas un peu violent cette fonction ?

    Merci en tout cas, j'ai fait un peu des sacs de noeuds là.

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

Discussions similaires

  1. 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
  2. [Tableaux] Trier un array
    Par borgfabr dans le forum Langage
    Réponses: 11
    Dernier message: 23/04/2006, 15h13
  3. [Tableaux] Accesseur et Array
    Par Philsmile dans le forum Langage
    Réponses: 5
    Dernier message: 30/03/2006, 12h06
  4. [Tableaux] Envoyer un Array par un form method get
    Par Zen_Fou dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2006, 19h51
  5. [Tableaux] Gérer une array...
    Par kult dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 17h03

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