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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    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 : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    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 éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    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 : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    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 éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    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.

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

Discussions similaires

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

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