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 multi-dimensionnel


Sujet :

Langage PHP

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut Trier un tableau multi-dimensionnel
    Bonjour,
    Mon problème est dans le titre.
    Jai un tableau généré ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tab[$i] ['Z1'] = $Z1;
    $tab[$i] [$ii] ['Z2'] = $Z2;
    $tab[$i] [$ii] ['Z3'] = $Z3;
    Mon tableau est correct après génération, mai je n'arrive pas a le trier.
    Je souhaiterais de la trier d'abord sur Z1, et a l'interieur du Z1, sur Z2 et ensuite sur Z3
    J'ai testé avec différents code dont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach ($tab as $key => $row) 
    {
        $Z1T[$key]  = $row['Z1'];
        $Z2T[$key]  = $row['Z2'];
        $Z3T[$key] = $row['Z3'];
    }
    array_multisort ($Z1T, SORT_ASC, $tab);
    array_multisort ($Z2T, SORT_DESC, $Z3T, SORT_ASC, $tab);
    Mais cela ne marche pas.
    Quelqu'un peut-til m'aider.
    Merci!

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Salut,

    Il y a une fonction dans les contributions du site PHP.net à la page array_multisort :
    http://fr2.php.net/manual/fr/functio...sort.php#83117

  3. #3
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Merci Bisûnûrs,

    Comme je ne connais pas l'anglais, et que ce n'est pas très clair sur le lien, je suis toujours dans la même situation

    A+

  4. #4
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    J'ai beau essayer de regarder sur le lien je ne vois rien qui pourrais m'aider.
    En clair ce que je voudrais c'est:

    Dans ma base j'ai des années, des noms de personnes et certains sont ou Profs ou élève.

    J'ai pour une période scolaire, généré un tableau avec les années en Z1, et en vrac les noms en Z2, et l'indice 1 si c'est un Prof et 0 si c'est un élève en Z3.
    ce que je veux c'est:

    Année
    Nom Profs
    Nom élève
    Nom élève
    etc
    Année
    Nom Profs
    Nom élève
    Nom élève
    etc
    Année
    Nom Profs
    Nom élève
    Nom élève
    etc
    Actuellement si je tri sur année ca marche pour les années, mais les noms des Profs sont n'inporte ou dedans à l'intérieur de l'année.
    Mais si je tri ensuite pour avoir le Prof en tête (Z3) et les nom par ordre alphabetique (Z2)
    Ca marche pas et je ne comprend pas la logique du tri obtenu.
    Je pense que ces précisions t'eclairerons un peu plus.
    Merci
    A+

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Je comprends pas trop l'histoire de tes Z1, 2 et 3

    Pourquoi mélanger profs et élèves ?

    pourquoi ne pas faire directement le tri lors du select dans ta table ?

  6. #6
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour Xumil,
    Mes Z1, 2 ,3 Sont des noms générique que j'ai mis pour identifier mes champs.

    Pourquoi mélanger profs et élèves ?
    Parce que j'ai un fichier général d'identite qui a un champ avec 1 s'il s'agit d'un prof et 0 pour un élève.

    pourquoi ne pas faire directement le tri lors du select dans ta table ?
    Parceque dans un premier temps je génère un tableau qui en fonction du demandeur va lire un fichier pour identifier ses classes dans lesquelles il a été identifié.
    Ensuite par foreach je relie ce tableau et je retourne dans cette table qui contient en vrac les classes , les Numeros des individus dans cette classe et, en relation avec le fichiers des individus, je génère un nouveau tableau comprenant:
    array(La classe)
    array(L'identite
    Le statut)
    Donc a cette relecture, Je peux lire un profs melangé à des eleves et des noms commencant par Z devant des M par exemple.
    Voila
    A+

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Manifestement, je ne comprends pas ton système.

    Je ne vois pas du tout ce qui est gênant de faire directement le tri lors de la sélection dans ta table.

    De plus, ton array est mal pensé je pense, il devrait plutôt ressembler à un truc du genre :

    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
    array
    (
         [classe idendité] => array
                          (
                                [liste_prof] => array
                                (
                                       [id] => identite
                                       [id] => identite
                                       ....
                                 )
                                 [liste_élèves] => array
                                 (
                                        [id] => identite
                                        [id] => identite
                                        ....
                                  )
                          )
         [classe idendité] => array
                          (
                               .....
                          )
    )

  8. #8
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Merci Xunil,

    J'ai resolu mon problème.

    Bonne soirée

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

Discussions similaires

  1. [XL-2003] Faire un tableau multi-dimensionnel, pas facile (intégrer et trier)
    Par will-1981 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/11/2010, 16h17
  2. [PHP 5.3] Trier un tableau multi-dimensionnel
    Par shaoling dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2010, 09h29
  3. [Tableaux] Trier un tableau multi-dimensionnel associatif
    Par Oprichnik dans le forum Langage
    Réponses: 9
    Dernier message: 27/07/2007, 23h16
  4. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23
  5. Réponses: 4
    Dernier message: 24/08/2005, 14h09

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