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 d'un tableau multi-dimensions


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [Tableaux] Tri d'un tableau multi-dimensions
    Bonjour,

    Je cherche à faire un tri sur un tableau comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array ( [0] => Array ( ) 
    [1] => Array ( ) 
    [2] => Array ( ) 
    [3] => Array ( ) 
    [4] => Array ( [3] => 2 ) 
    [5] => Array ( [3] => 8 ) 
    [6] => Array ( [5] => 5 [3] => 3 ) 
    [7] => Array ( ) 
    [8] => Array ( ) 
    [9] => Array ( ) 
    [10] => Array ( ) 
    [11] => Array ( [3] => 7 ) )
    C'est sur le 2ème niveau du tableau que je souhaite faire ce tri.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [6] => Array ( [5] => 5 [3] => 3 )
    doit devenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [6] => Array ( [3] => 3 [5] => 5  )
    Je n'arrive pas à trouver comment faire.
    Merci d'avance

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci, j'avais bien trouvé cela et j'avais même essayé quelque chose sur cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    // Obtient une liste de colonnes
    foreach ($data as $key => $row) {
       $volume[$key]  = $row['volume'];
       $edition[$key] = $row['edition'];
    }
     
    // Tri les données par volume décroissant, edition croissant
    // Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    ?>
    Mais en fait, mon problème vient du fait que je n'ai pas d'indice de type volume ou edition, donc je m'étais arrêté là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($nbjmois as $key => $row) 
    	{
    	   //$categorie[$key]  = $row['????'];
    	}
    	// Tri les données
    	array_multisort($categorie, SORT_ASC,  $nbjmois);
    C'est là $row['????'] que je bloque

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    En fait je n'ai que le tableau de chaque ligne à trier, c'est à dire un tableau comme celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [5] => 5 [3] => 3 )
    Est-ce cela que je dois faire, ou trier l'ensemble du tableau ?

    J'avoue être assez perdu

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    tu peux, pour chaque ligne, trier le tableau quelle contient avec sort puis réaffecter le nouveau tableau à la ligne tout simplement.

  6. #6
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Euh !!! C'est la cata avec sort, où et c'est sûrement cela, je ne sais pas l'utiliser

    Mon tableau avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array ( [0] => Array ( ) 
    		[1] => Array ( ) 
    		[2] => Array ( ) 
    		[3] => Array ( ) 
    		[4] => Array ( [3] => 2 ) 
    		[5] => Array ( [3] => 8 ) 
    		[6] => Array ( [5] => 5 [3] => 3 ) 
    		[7] => Array ( ) 
    		[8] => Array ( ) 
    		[9] => Array ( ) 
    		[10] => Array ( ) 
    		[11] => Array ( [3] => 7 ) )
    Mon code php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $m=0;
    	foreach ($nbjmois as $ligne) 
    	{
    	  sort($ligne);
    	  $nbjmois[$m]=$ligne;
    	  $m++;
    	}
    Mon tableau après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array ( [0] => Array ( ) 
    		[1] => Array ( ) 
    		[2] => Array ( ) 
    		[3] => Array ( ) 
    		[4] => Array ( [0] => 2 ) 
    		[5] => Array ( [0] => 8 ) 
    		[6] => Array ( [0] => 3 [1] => 5 ) 
    		[7] => Array ( ) 
    		[8] => Array ( ) 
    		[9] => Array ( ) 
    		[10] => Array ( ) 
    		[11] => Array ( [0] => 7 )
    Il m'a changé les valeur de mes poste de tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [4] => Array ( [3] => 2 )
    doit rester comme cela et pas devenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [4] => Array ( [0] => 2 )
    La valeur entre [] doit rester la même après le tri qu'avant.

    Voilà ce que dit la doc
    SORT : Cette fonction assigne de nouvelles clés pour les éléments du paramètre array . Elle effacera toutes les clés existantes que vous aviez pû assigner, plutôt que de réordonner les clés.
    Ben justement, il ne faut pas.

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    L'utilisation d'un asort est plus approprié :

    ASORT trie le tableau array de telle manière que la corrélation entre les index et les valeurs soit conservée. L'usage principal est lors de tri de tableaux associatifs où l'ordre des éléments est important.
    Merci beaucoup, l'idée de départ m'a bien mis sur la voie

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/12/2011, 13h12
  2. [Tableaux] Lecture d'un tableau multi-dimension
    Par nico341 dans le forum Langage
    Réponses: 16
    Dernier message: 15/04/2008, 15h24
  3. [Tableaux] recherche dans un tableau multi dimension
    Par kagura dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2007, 14h27
  4. [Tableaux] Tri sur un tableau à 2 dimensions
    Par DrOOMMgba dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 19h47
  5. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23

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