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 tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut Trier un tableau
    Bonjour,

    Je cherche à comprendre comment trier le un tableau contenu tout des enregistrements comme ceci:



    Comment trier se tableau par "score" et ensuite par "votes".

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $array_sites=array(
                             array('record' => 'test1', 'score' => 4, 'votes' =>3),
                             array('record' => 'test2', 'score' => 9, 'votes' =>4),
                             array('record' => 'test3', 'score' => 9, 'votes' =>1)
                             )
    Ce qui nous donne à l'affichage si on fait un foreach suivi d'un echo:

    'test1' - 4 - 3
    'test2' - 9 - 4
    'test3' - 9 - 1

    Quel est le code me permettant de faire le tri suivant:

    'test2' - 9 - 4
    'test3' - 9 - 1
    'test1' - 4 - 3


    En fait, j'aimerais pouvoir trier par "score" décroissant et ensuite par "votes" décroissant. (normal vu qu'un score de 9 pour 4 votes, a plus d'impacte qu'un score de 9 pour 1 seul vote)


    Merci de votre aide!

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Tu dois avoir une solution simple avec array_multisort() mais comme j'ai un peu de mal perso avec cette fonction, je te donne une solution compliquée avec usort :

    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_sites=array(
                             array('record' => 'test1', 'score' => 4, 'votes' =>3),
                             array('record' => 'test2', 'score' => 9, 'votes' =>4),
                             array('record' => 'test3', 'score' => 9, 'votes' =>1)
                             );
     
    function mysort( $ar1 , $ar2 ){
    	$retval = $ar1['score'] == $ar2['score'] ? 0 : ( $ar1['score'] > $ar2['score'] ? -2 : 2 );
    	$retval += $ar1['votes'] == $ar2['votes'] ? 0 : ( $ar1['votes'] > $ar2['votes'] ? -1 : 1 );
    	return $retval;
    }
     
    print_r( $array_sites );
     
    usort( $array_sites , 'mysort' );
     
    print_r( $array_sites );

  3. #3
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Merci pour cette solution!

    Cependant tu m'as parlé de multisort, et j'ai donc essayé car il est vrai que ta solution est assez tordue

    Voici la solution avec multisort:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($array_sites as $key => $value) {
    			$avg[$key]  = $value['avg'];
    			$votes[$key] = $value['votes'];
    		}
     
    		array_multisort($avg, SORT_DESC, $votes, SORT_DESC, $array_sites);
    Un grand merci en tout cas

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

Discussions similaires

  1. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 23h38
  2. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 10h27
  3. [Débutant] Remplir et trier un tableau
    Par james-dean dans le forum Assembleur
    Réponses: 15
    Dernier message: 01/05/2005, 18h40
  4. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 01h04
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 17h51

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