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 selon une colonne


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Par défaut Trier un tableau selon une colonne
    Bonjour,

    je me tue à trier un tableau de plusieurs centaines de lignes dont le code d'encapsulation est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[] = array($distance_gps->description, $distance_gps->name, $h);
    et voici un extrait en print_r:

    Array ( 
    [0] => Array ( [0] => 01033002 [1] => BELLEGARDE [2] => 312.7362 ) 
    [1] => Array ( [0] => 01089001 [1] => AMBERIEU [2] => 286.4661 ) 
    [2] => Array ( [0] => 01185004 [1] => HAUTEVILLE [2] => 294.8129 ) 
    )
    je souhaite trier le tableau selon la troisième colonne (312.7362, 286.4661, 294.8129) du plus petit au plus grand et en ressortir les 3 plus petites valeurs associées $tableau[$u][0], $tableau[$u][1] et $tableau[$u][2]

    Je n'y arrive pas avec array_multisort ou même du basique php en if!!
    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
    28
    29
    30
    $nblignestableau = count ( $tableau );
    $u = 0;
    $v = 10000;
    $w = 10000;
     
    while($u < $nblignestableau){
         if($tableau[$u][2] < $v){
            $k = $w;
            $w = $v;
            $v = $tableau[$u][2];
            $x1 = $tableau[$u][0];
            $y1 = $tableau[$u][1];
            $z1 = $tableau[$u][2];                
         }elseif($tableau[$u][2] < $w){
            $k = $w;     
            $w = $tableau[$u][2];
            $x2 = $tableau[$u][0];
            $y2 = $tableau[$u][1];
            $z2 = $tableau[$u][2];     
         }elseif($tableau[$u][2] < $k){
            $k = $tableau[$u][2];      
            $x3 = $tableau[$u][0];
            $y3 = $tableau[$u][1];
            $z3 = $tableau[$u][2];     
        };
        $u = $u + 1;
      };
    echo "$x1 - $y1 - $z1 <br><br>";
    echo "$x2 - $y2 - $z2 <br><br>";
    echo "$x3 - $y3 - $z3 <br><br>";
    celui ci m'affiche
    34154001 - MONTPELLIER - 8.7669
    30132004 - LA GRAND COMBE - 76.2123
    34337001 - VILLENEUVE-LES-MAG - 16.5258
    la première et troisième valeur sont corrects mais pas la seconde qui devrait être 34151005 - MARSILLARGUES - 11.5652. Je n'y comprend rien!!!!

    Merci pour votre aide!

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 342
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 342
    Billets dans le blog
    17
    Par défaut
    Utilise usort( ).

    Sinon tes données viennent d'où ? Base de données ?

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 342
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 342
    Billets dans le blog
    17
    Par défaut
    Je n'y arrive pas avec array_multisort
    J'ajoute que pour utiliser array_multisort( ) il faut que tes "colonnes" soit chacune un tableau passé en paramètre à array_multisort( ). C'est possible après un traitement intermédiaire.

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Citation Envoyé par Séb. Voir le message
    J'ajoute que pour utiliser array_multisort( ) il faut que tes "colonnes" soit chacune un tableau passé en paramètre à array_multisort( ). C'est possible après un traitement intermédiaire.
    seb
    Il suffit d'aller voir la documentation php, on trouve bien assez d'exemples ou mieux: regarder dans la FAQ PHP ici (merci jreaux62 pour l'info)

  5. #5
    Invité
    Invité(e)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 126
    Par défaut
    Bonjour!

    Quel défoulement!

    Je suis navré, je dois surement être stupide mais j'ai bien vu cet exemple avant de poster.
    Je ne le comprends pas et n'arrive pas à le mettre en pratique, notamment dans mon cas!

    que sont $a et $b, les valeurs de chaque colonne, mais comment les récupérer?!

    Merci!

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

Discussions similaires

  1. [MySQL] Trier un tableau associatif selon une colonne
    Par okoweb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/10/2011, 19h33
  2. Trier selon une colonne et à partir de la 3eme ligne
    Par manu f dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2010, 20h18
  3. Trier selon une colonne masquée
    Par michaeljeru dans le forum jQuery
    Réponses: 1
    Dernier message: 16/05/2010, 01h01
  4. ordonner un tableau associatif selon une colonne
    Par hoolako dans le forum PL/SQL
    Réponses: 4
    Dernier message: 10/03/2010, 18h43
  5. [debutant][JTable] Trier selon une colonne
    Par yupa dans le forum Composants
    Réponses: 3
    Dernier message: 08/08/2005, 11h05

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