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 des valeurs d'un tableau [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut [Tableaux] Tri naturel des valeurs d'un tableau
    Bonjour,

    J'ai un tableau de ce type :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Array
    (
      [12] => Array
      (
        [nom] => 2-300
        [miniature] => 2-mini_Nenuphars.jpg
      )
     
      [11] => Array
      (
        [nom] => 2-200
        [miniature] => 2-mini_Hiver.jpg
      )
     
      [4] => Array
      (
        [nom] => 1-3
        [miniature] => 1-mini_3.jpg
      )
     
      [2] => Array
      (
        [nom] => 1-10-NB
        [miniature] => 1-mini_10-NB.jpg
      )
     
      [16] => Array
      (
        [nom] => 3-5
        [miniature] => 3-mini_Nenuphars.jpg
      )
    )
    Je souhaiterai trier ce tableau d'une façon naturelle en fonction de la valeur de [nom].
    Pour réaliser ceci, je pensais utiliser la fonction natsort().

    Mon problème se situe au niveau des éléments de référence du tri.
    En effet, comme dit ci dessus, je voudrais trier en fonction de la valeur [nom] tout en gardant la correspondance avec les index.
    (Ils sont utilisés ailleurs dans le script).
    Voici ce que je voudrais obtenir :
    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
    23
    24
    25
    26
    27
    28
    Array
    (
      [4] => Array
      (
        [nom] => 1-3
        [miniature] => 1-mini_3.jpg
      )
      [2] => Array
      (
        [nom] => 1-10-NB
        [miniature] => 1-mini_10-NB.jpg
      )
      [11] => Array
      (
        [nom] => 2-200
        [miniature] => 2-mini_Hiver.jpg
      )
      [12] => Array
      (
        [nom] => 2-300
        [miniature] => 2-mini_Nenuphars.jpg
      ) 
      [16] => Array
      (
        [nom] => 3-5
        [miniature] => 3-mini_Nenuphars.jpg
      )
    )
    Quelqu'un aurait il une piste ?
    J'espère que vous aurez compris mon problème.
    Merci d'avance pour vos réponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde la doc de la fonction array_multisort(), il y a des exemples.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    essaye ça :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    $a = Array
    (
      12 => Array
      (
        'nom' => '2-300',
        'miniature' => '2-mini_Nenuphars.jpg',
      ),
     
      11 => Array
      (
        'nom' => '2-200',
        'miniature' => '2-mini_Hiver.jpg',
      ),
     
      4 => Array
      (
        'nom' => '1-3',
        'miniature' => '1-mini_3.jpg',
      ),
     
      41 => Array
      (
        'nom' => '1-3-2',
        'miniature' => '1-mini_3-2.jpg',
      ),
     
      412 => Array
      (
        'nom' => '1-3-1',
        'miniature' => '1-mini_3-1.jpg',
      ),
     
      2 => Array
      (
        'nom' => '1-10-NB',
        'miniature' => '1-mini_10-NB.jpg',
      ),
     
      16 => Array
      (
        'nom' => '3-5',
        'miniature' => '3-mini_Nenuphars.jpg',
      ),
    );
     
    uasort($a, 'triNomNaturel');
     
    print_r($a);
     
     
    function triNomNaturel($valeur1, $valeur2)
    {
        return strnatcmp($valeur1['nom'], $valeur2['nom']);
    }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    Bonjour,
    parfait ça fonctionne.
    Merci à tout les deux pour vos réponses

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

Discussions similaires

  1. [Tableaux] Comment aditionner des valeurs d'un tableau
    Par vimarty dans le forum Langage
    Réponses: 3
    Dernier message: 04/01/2008, 11h34
  2. Réponses: 3
    Dernier message: 12/06/2006, 12h04
  3. Réponses: 5
    Dernier message: 14/02/2006, 18h52
  4. [Tableaux] récuperer des valeurs d un tableau
    Par student007 dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2006, 22h27
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41

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