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 :

Trie multicritère d'un tableau d'objets à une dimension. [PHP 5.1]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 365
    Points : 139
    Points
    139
    Par défaut Trie multicritère d'un tableau d'objets à une dimension.
    Bonjour à tous,

    Je souhaite mettre en place un tri multicritère d'un tableau d'objets représentant des articles. Ces articles sont trié selon trois critères dans l'ordre suivant : la disponibilité, la catégorie de l'article, puis la quantité . Sachant que l'article est déclaré php de la façon suivante :
    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
     
    class article{
            public $id = 0;
    	public $dispo = '';
    	public $categorie = '';
    	public $quantite = '';
     
    function __construct($id,$dispo,$categorie,$quantite){
    		$this->id = $id;
    		$this->dispo = $dispo;
    		$this->categorie = $categorie;
    		$this->quantite = $quantite;
     
    	}
    }
    J'effectue un tableau d'article mono-dimensionnel et ce dernier est trié par disponibilité (numérique), catégorie (alphanumérique) puis la quantité .
    Je peux trié le tableau par ordre de quantité grâce à la fonction usort de php et la fonction que j'ai faite ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function compareQuantite($article1,$article2){
     
            if($article1->quantite< $article2->quantite){
                return 1;
            }elseif($article1->quantite == $article2->quantite){
                return 0;
            }else{
                return -1;
            }
     
    }
    Comment peut on faire un tri avec 3 critères et non plus 1?

    J'utilise php 5.1.6
    Je vous remercie d'avance .

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Hello,

    Voici un exemple de comparateur (pour des valeurs numériques)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function compareMulticriteres( $objet1 , $objet2 ){
    	$retour = 0;	
    	// critere principal de tri
    	if( $objet1->critere1 != $objet2->critere1 ) $retour += $objet1->critere1 < $objet2->critere1 ? 4 : -4;
    	// critere secondaire de tri
    	if( $objet1->critere2 != $objet2->critere2 ) $retour += $objet1->critere2 < $objet2->critere2 ? 2 : -2;
    	// critere le plus faible du tri
    	if( $objet1->critere3 != $objet2->critere3 ) $retour += $objet1->critere3 < $objet2->critere3 ? 1 : -1; 
     
    	return $retour;
    }
    chaque critère supplémentaire doit restituer une valeur supérieure à la somme des valeurs des critères précédents. Soit une progression exponentielle : 1, 2, 4, 8, 16...

    Désolé de pas arriver à être plus clair...

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 365
    Points : 139
    Points
    139
    Par défaut
    Merci bien,

    Je vais essayer de me débrouiller à partir ton exemple.

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

Discussions similaires

  1. Tableau d'objets à plusieurs dimensions
    Par avia767 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 08/10/2013, 12h30
  2. [POO] Tableau multidimensionnel : accès à une dimension complète
    Par amundsen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/12/2008, 17h34
  3. Réponses: 12
    Dernier message: 25/04/2007, 11h36
  4. [POO] Tableau d'objets B dans une instance de class A
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2006, 09h52

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