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 :

tri de plusieurs array multidimention


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut tri de plusieurs array multidimention
    Bonjour a tous,

    Je me trouve face a un probleme, qui ne s'est jamais posé avant.. et j'avoue que je peche malgres pas mal de recherches comme array_multisort (mais je vois trop comment l'utiliser dans mon cas...)...

    j'ai plusieurs arrays exemple :
    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
     
    [abricotier] => Array
            (
                [adultes] => 12 (nb d'abricotiers adultes)
                [pousses] => 18 (nb d'abricotiers qui viennent d'etre plantés)
                [Total] => 30 (total d'abricotiers)
            )
     
        [framboisier] => Array
            (
                [adultes] => 1
                [pousses] => 0
                [Total] => 1
            )
     
        [fraisier] => Array
            (
                [adultes] => 4
                [pousses] => 3
                [Total] => 7
            )
    j'aimerai avoir la possibilité de trier de 3 façons :
    - trier les arbres qui ont le plus de plans adultes
    - trier les arbres qui sont le plus en train de pousser
    - trier suivant le total de chaque arbres

    actuellement, je passe en $_GET['tri'] soit 'adultes', soit 'pousses', soit 'Total'

    suis-je obligé de recreer un nouvel array pour le reinjecter apres dans mes array originaux ?
    array_multisort ne me permet t'elle pas de trier selon 3 keys ?

    j'avoue que je ne sais pas trop vers quoi m'orienter malgres mes différents test qui ne donnent rien du tout...

    si vous avez une petite idée, je prendrai bien volontiers !
    merci d'avance, et de tres bonnes fetes a tous !

  2. #2
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut

    Je n'ai jamais effectué un tel tri, mais j'ai trouvé ceci:
    http://php.net/manual/fr/array.sorting.php

    regarde plus précisément ici: http://www.php.net/manual/fr/function.uasort.php

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 211
    Points : 8 438
    Points
    8 438
    Billets dans le blog
    17
    Par défaut
    Utilise plutôt uasort( ) : http://fr.php.net/manual/fr/function.uasort.php

    Edit : grilled

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Toine.pro Voir le message
    Salut

    Je n'ai jamais effectué un tel tri, mais j'ai trouvé ceci:
    http://php.net/manual/fr/array.sorting.php

    regarde plus précisément ici: http://www.php.net/manual/fr/function.uasort.php
    effectivement, dans la fonction uasort, en bas dans les commentaires, un gars a laissé LA fonctions qui me fallait

    je la note ici avec mon exemple :
    La fonction :
    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
    function sortByOneKey($array, $key, $asc = true) {
        $result = array();
     
        $values = array();
        foreach ($array as $id => $value) {
            $values[$id] = isset($value[$key]) ? $value[$key] : '';
        }
     
        if ($asc) {
            asort($values);
        }
        else {
            arsort($values);
        }
     
        foreach ($values as $key => $value) {
            $result[$key] = $array[$key];
        }
     
        return $result;
    }
    et l'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $users = array(
        "abricotier" => array('adultes' => 12, 'pousses' => 35, 'total' => 47),
        "framboisier" => array('adultes' => 5, 'pousses' => 24, 'total' =>29),
        "bananier" => array('adultes' => 8, 'pousses' => 12, 'total' =>20)
    );
     
    $sortedByNameAsc = sortByOneKey($users, 'pousses');
    $sortedByNameDesc = sortByOneKey($users, 'pousses', false);
     
    echo "tri par 'adultes' ordre ascendant: ";
    echo "<pre>" . print_r($sortedByNameAsc, true) . "</pre>";
    echo "<br /><br />tri par 'adultes' ordre descendant: ";
    echo "<pre>" . print_r($sortedByNameDesc, true) . "</pre>";
    merci encore de vos propositions et de votre aide !
    bonnes fetes encore,


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

Discussions similaires

  1. [Tableaux] Lecture d'une variable contenant plusieurs arrays
    Par MightyDucks dans le forum Langage
    Réponses: 10
    Dernier message: 27/03/2006, 12h40
  2. Tri sur plusieurs colonnes
    Par soso78 dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2006, 15h28
  3. [HashMap] Tri sur plusieurs valeurs
    Par cosmos38240 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/01/2006, 14h14
  4. [Collection] Tris sur plusieurs champs
    Par partyboy dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 12/07/2005, 16h56
  5. Comment faire le tri d'un array of array ?
    Par Tchouffy dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2005, 20h55

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