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 sur un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut tri sur un tableau
    Bonjour à tous,

    Je bloque actuellement pour trier un tableau. Voici à quoi il ressemble :

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    Array
    (
        [1] => Array
            (
                [CLIENT] => INT01
                [NOM] =>  AAAAA
                [ptf_encours] => 2
                [nb_sinistres] => 0
                [contrats_annuels] => 0.5
                [montant_sinistres] => 0
                [prime] => 0
                [rejet] => 0
                [nb_crt_prlv] => 1
                [aff_nvl_resil] => 0
                [aff_nvl_total] => 1
                [frequence_sinistres] => 0
                [ratio_impayes] => 0
                [ratio_sp] => 0
                [qualite] => 0
                [duree_moy] => 91.25
                [style] => englobage1
            )
     
        [2] => Array
            (
                [CLIENT] => 002617
                [NOM] => BBBBB
                [ptf_encours] => 1
                [nb_sinistres] => 0
                [contrats_annuels] => 1
                [montant_sinistres] => 0
                [prime] => 0
                [rejet] => 0
                [nb_crt_prlv] => 0
                [aff_nvl_resil] => 0
                [aff_nvl_total] => 0
                [frequence_sinistres] => 0
                [ratio_impayes] => 0
                [ratio_sp] => 0
                [qualite] => 0
                [duree_moy] => 365
                [style] => englobage2
            )
     
        [3] => Array
            (
                [CLIENT] => 410001
                [NOM] => CCCCC
                [ptf_encours] => 3
                [nb_sinistres] => 0
                [contrats_annuels] => 2.01
                [montant_sinistres] => 0
                [prime] => 0
                [rejet] => 0
                [nb_crt_prlv] => 1
                [aff_nvl_resil] => 0
                [aff_nvl_total] => 0
                [frequence_sinistres] => 0
                [ratio_impayes] => 0
                [ratio_sp] => 0
                [qualite] => 0
                [duree_moy] => 244.55
                [style] => englobage1
            )
     
        [4] => Array
            (
                [CLIENT] => 410003
                [NOM] => DDDDD
                [ptf_encours] => 290
                [nb_sinistres] => 4
                [contrats_annuels] => 258.94
                [montant_sinistres] => 2870.98
                [prime] => 885.22
                [rejet] => 7
                [nb_crt_prlv] => 79
                [aff_nvl_resil] => 0
                [aff_nvl_total] => 73
                [frequence_sinistres] => 1.54
                [ratio_impayes] => 8.86
                [ratio_sp] => 324.32
                [qualite] => 0
                [duree_moy] => 325.91
                [style] => englobage_rouge
            )
    .
    .
    .
        [460] => Array
            (
                [CLIENT] => 874541
                [NOM] => EEEEE
                [ptf_encours] => 290
                [nb_sinistres] => 4
                [contrats_annuels] => 258.94
                [montant_sinistres] => 2870.98
                [prime] => 885.22
                [rejet] => 7
                [nb_crt_prlv] => 79
                [aff_nvl_resil] => 0
                [aff_nvl_total] => 73
                [frequence_sinistres] => 1.54
                [ratio_impayes] => 8.86
                [ratio_sp] => 324.32
                [qualite] => 0
                [duree_moy] => 325.91
                [style] => englobage_rouge
            )
    Actuellement, il est trié par [CLIENT]. Comment est-il possible de le trier par chacune des entrées ? par exemple pour le trier par [NOM] ?

    J'ai bien regardé du coté des fonctions de tri ici : http://php.net/manual/fr/array.sorting.php

    Ensuite je me suis dit qu'il fallait que je prenne la fonction array_multisort mais ensuite, je ne comprends pas trop comment la mettre en oeuvre...

    Quelqu'un peut-il m'aider ?

    D'avance merci,

    Souri84

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Par le plus grand des hasard, tu ne récupère pas ce tableau d'un base de données ?

  3. #3
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Je récupère ce tableau via une dizaine de requêtes mais aussi de fichiers CSV que l'on m'envoie par e-mail... Effectivement les données sont issues d'une base oracle.

    Le mieux serait de faire des ASC ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Tu pourrais faire une temple temporaire pour y insérer l'ensemble de tes données et effectivement faire un ORDER BY.

  5. #5
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    une temple ?

    Il n'y aurait pas moyen d'utiliser une des fonctions de php toute prête plutôt que de devoir modifier X requêtes ?

    Merci pour tes réponses,

    A+

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Table....

    Je suis vachement fatigué.....pour moi c'est le plus simple.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Personnellement, j'ai un faible pour usort (et éventuellement uasortet uksort)
    Tu peux très simplement définir une fonction de comparaison de deux éléments de ton tableau et l'utiliser comme fonction de tri.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function sortParNom($a,$b) {
      if ($a['NOM'] == $b['NOM']) {
        return 0;
      }
      return ($a['NOM'] > $b['NOM']) ? -1 : 1;
    }
     
    usort($tableauATrier, 'sortParNom');
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre régulier
    Profil pro
    Webmaster
    Inscrit en
    Octobre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2009
    Messages : 125
    Points : 82
    Points
    82
    Par défaut
    Merci Celira et MaitrePylos pour vos réponses...

    J'ai en fait utilisé asort() et arsort() comme dans la doc et ça marche ! je garde toute de même sous le coude ton petit bout de code Celira !

    Grand merci à vous deux !

    A+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2007, 14h35
  2. [Tableaux] tri sur un tableau multidimensionnel
    Par maysa dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2007, 08h53
  3. [Tableaux] Tri sur un tableau à 2 dimensions
    Par DrOOMMgba dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 19h47
  4. [Collection] Tri sur un tableau d'entier
    Par Grand sorcier dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/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