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] Tri de valeur et arsort


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Points : 41
    Points
    41
    Par défaut [Tableaux] Tri de valeur et arsort
    Bonjour,

    Je recupere de ma base de donnees les valeurs suivantes :

    28:5:12021
    29:4:19022
    30:5:12025

    J'aimerai les trier de sorte a obtenir 30, 28, 29.

    J'explique le resultat :
    Je trie d'abord en fonction de la deuxieme valeur et si deux valeurs sont egales je regarde la troisieme valeurs pour determiner le plus grand.

    Pour l'instant j'arrive a faire un trie sur la deuxieme valeur uniquement, mais ensuite je bloque :

    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
    22
    23
    24
    25
     
    $tabesp=explode(" ",$result);
    $tabvaleur = array();
     
    for($j=0;$j<sizeof($tabesp);$j++){ 
    	$decomp=explode(":",$tabesp[$j]);
     
    	IF(!empty($tabesp[$j])){ //--- Si c'est pas vide
     
    	   $ID_ENR = $decomp[0];
    	   $OCCURENCE= $decomp[1];
    	   $NUM= $decomp[2];
     
     
    	if (array_key_exists($ID_ENR,$tabvaleur)){
    		$tabvaleur[$ID_ENR] = $tabvaleur[$ID_ENR] + $OCCURENCE;
    	}
    	else {
    		$tabvaleur[$ID_ENR] = $OCCURENCE;
    	}
     
    	}
    }
     
    arsort($tabvaleur);
    Qq'un aurait-il une idee plz ?

    D'avance Merci

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Est-ce possible de poster une array d'example avec le code qui permet de directement coller et experimenter svp ?

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Faire une fonction pour le tri utilisée par usort simplifierait certainement :
    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
    22
    23
    24
    25
    26
    27
    <?php
    $array = array(
        '28:5:12021',
        '29:4:19022',
        '30:5:12025'
    );
     
    function my_sort($str1, $str2) {
        $parts1 = explode(':', $str1);
        $parts2 = explode(':', $str2);
        $len1 = count($parts1);
        $len2 = count($parts2);
        if ($len1 == $len2 && $len1 >= 3) {
            if ($parts1[1] == $parts2[1]) {
                return ($parts1[2] > $parts2[2] ? -1 : 1);
            } else {
                return ($parts1[1] > $parts2[1] ? -1 : 1);
            }
        } else {
            return ($len1 > $len2 ? -1 : 1);
        }
    }
     
    header('Content-type: text/plain');
    usort($array, 'my_sort');
    print_r($array);
    ?>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Dsl de repondre aussi tard...
    Merci bcp pour ton aide, ça marche impec

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

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. Réponses: 2
    Dernier message: 14/12/2011, 13h12
  3. [PHP 5.2] [Tableaux] Tri naturel des valeurs d'un tableau
    Par Riko63 dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2009, 08h14
  4. Réponses: 4
    Dernier message: 06/03/2007, 13h35
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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