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 naturel dans un tableau multidimensionnel


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Tableaux] Tri naturel dans un tableau multidimensionnel
    Bonsoir à tous,

    Comme l'intitulé le dit, j'ai un problème pour trier de manière naturelle un tableau multidimensionnel.

    voici un morceau de mon code :

    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
    $tableau = array();
    $tableau[] = array('numero' => '1', 'valeur' => '1 f. 50'); 
    $tableau[] = array('numero' => '2', 'valeur' => '3 f.'); 
    $tableau[] = array('numero' => '1b', 'valeur' => '1 f. 50'); 
    $tableau[] = array('numero' => '3', 'valeur' => '5 f.'); 
    $tableau[] = array('numero' => '1a', 'valeur' => '2 f.'); 
    $tableau[] = array('numero' => '10', 'valeur' => '2 f.'); 
     
    function compare($a, $b)	{
       if($a['numero'] == $b['numero'])	{
         return 0;
       }
       return($a['numero'] < $b['numero']) ? -1 : 1;
    }
     
    usort($tableau, "compare");
     
    print_r($tableau);
    Mon code trie bien le tableau par "numero" mais n'est pas un tri naturel humain comme si dessous
    1 - 1a - 1b - 2 - 3 - 10.

    Que faire?

    Merci d'avance pour votre aide

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 424
    Points : 15 794
    Points
    15 794
    Par défaut
    tu peux utiliser la fonction http://php.net/strnatcmp pour ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function compare($a, $b) {
        return strnatcmp($a['numero'], $b['numero']);
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Merci beaucoup Mathieu
    ça fonctionne nickel

    Bon Week-end

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/12/2009, 15h02
  2. [PHP 5.2] [Tableaux] Tri naturel des valeurs d'un tableau
    Par Riko63 dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2009, 08h14
  3. Réponses: 1
    Dernier message: 05/11/2006, 09h24
  4. [Tableaux] probleme unserialize dans un tableau(list)
    Par urikawa dans le forum Langage
    Réponses: 2
    Dernier message: 19/06/2006, 11h29
  5. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38

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