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] Trier un tableau multi-dimensionnel associatif


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut [Tableaux] Trier un tableau multi-dimensionnel associatif
    Bonjour, y a t-il moyen de trier ce type de tableau par exemple par pseudo ? :

    array (
    0 => array ("pseudo" => "Oprichnik", "pass" => "bibi")
    1 => array("pseudo" => "Dracau", "pass" => "astro")
    )

    Il faut donc trier les indexs.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 301
    Points : 15 622
    Points
    15 622
    Par défaut
    tu peux faire ça avec la fonction http://php.net/usort

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    function pseudo_cmp($a, $b) {
        return strcmp($a['pseudo'], $b['pseudo']);
    }
     
    usort($mon_tableau, 'pseudo_cmp');
    (j'avais ça sous la main)

  4. #4
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Merci ! pour la fonction toute faite aussi ça m'évite de chipoter !

  5. #5
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Seulement il y a un problème :

    le tableau renvoyer enlève remplace les noms d'index du tableau (associatif) par un index :

    array (
    0 =>
    array (
    0 => '33',
    1 => 'Bibi',
    2 => 'bibi@hotmail.com',
    3 => 'France',
    4 => 'Paris',
    )

    la fonction uasort ne regle pas le problème..

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous utilisez quoi ? Comment ? Sur quoi ?

    usort ne modifie pas les tableaux sur les niveaux "supérieurs" (cf votre exemple et le code que j'ai donné).

  7. #7
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Voici mon code ($orderBy contient quelque chose comme "pseudo desc" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    list($orderBy_champ,$orderBy_asc_dsc) = explode(" ",$orderBy);
     
    function champ_cmp($a, $b) {
    $sort_nb = strcmp($a[$GLOBALS["orderBy_champ"]], $b[$GLOBALS["orderBy_champ"]]);
     
    if(strtolower($GLOBALS["orderBy_asc_dsc"]) == "desc") {
    $sort_nb = -($sort_nb);
    }
    return $sort_nb;
    }
     
    usort($result, 'champ_cmp');

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Et en affichant le tableau avant/après qu'obtenez-vous ?

    Vous pouvez simplifier votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    list($orderBy_champ, $orderBy_asc_dsc) = explode(' ',$orderBy);
     
    function asc($a, $b) {
        return strcmp($a[$GLOBALS['orderBy_champ']], $b[$GLOBALS['orderBy_champ']]);
    }
     
    function desc($a, $b) {
        return strcmp($b[$GLOBALS['orderBy_champ']], $a[$GLOBALS['orderBy_champ']]);
    }
     
    usort($result, $orderBy_asc_dsc);

  9. #9
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    ok, je trie sur :

    $FILE[0]["id"] = "10";
    $FILE[0]["pseudo"] = "Oprichnik";
    $FILE[0]["email"] = "mxxxxxxxxxxxxxxx";
    $FILE[0]["pays"] = "Belgique";
    $FILE[0]["ville"] = "Namur";

    $FILE[1]["id"] = "20";
    $FILE[1]["pseudo"] = "Dracau";
    $FILE[1]["email"] = "dxxxxxx";
    $FILE[1]["pays"] = "Belgique";
    $FILE[1]["ville"] = "Namur";

    $FILE[2]["id"] = "33";
    $FILE[2]["pseudo"] = "Bibi";
    $FILE[2]["email"] = "bibi@hotmail.com";
    $FILE[2]["pays"] = "France";
    $FILE[2]["ville"] = "Paris";

    et j'obtiens :

    array (
    0 =>
    array (
    0 => '33',
    1 => 'Bibi',
    2 => 'bibi@hotmail.com',
    3 => 'France',
    4 => 'Paris',
    ),
    1 =>
    array (
    0 => '20',
    1 => 'Dracau',
    2 => 'drxxxx',
    3 => 'Belgique',
    4 => 'Namur',
    ),
    2 =>
    array (
    0 => '10',
    1 => 'Oprichnik',
    2 => 'maxxxxxx',
    3 => 'Belgique',
    4 => 'Namur',
    ),
    )

  10. #10
    Membre habitué

    Homme Profil pro
    Developpeur web
    Inscrit en
    Septembre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developpeur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Oups non désolé une erreur de ma part..

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

Discussions similaires

  1. [PHP 5.3] Trier un tableau multi-dimensionnel
    Par shaoling dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2010, 09h29
  2. Trier un tableau multi-dimensionnel
    Par GYK dans le forum Langage
    Réponses: 7
    Dernier message: 04/05/2009, 19h40
  3. Réponses: 5
    Dernier message: 04/10/2006, 18h49
  4. [Tableaux] trier un tableau associatif
    Par cijez dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2006, 16h07
  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