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 en fonction d'un autre


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 26
    Points
    26
    Par défaut [Tableaux] Trier un tableau en fonction d'un autre
    Salut à tous,

    Bon je rencontre un probleme de tri dans un tableau, j'explique :
    J'ai un tableau de ce type :
    [1] -> "Entrée un"
    [18] -> "Seconde entrée"
    [4] -> "Encore une entrée"

    et un second tableau de ce type :
    [0] -> "18"
    [1] -> "1"
    [2] -> "4"

    Je souahiterai trier le premier tableau en fonction du second, c'est à dire que l'odre des index du tableau 1 respecte l'ordre du tableau 2.

    Je sais pas si il existe un fonction faite pour ca ou si je doit en creer une pour.

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Je ne suis pas vraiment sur d'avoir compris ce que tu veux, mais naturellement, vu la liaison de tes deux tableaux, je les regrouperais.

    soit $tab1 ton premier tableau et $tab2 ton second tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $i = 0;
    while (isset($tab2[$i]) {
      $current_val = $tab2[$i];
      $tab_final[$i]['key'] = $current_val;
      $tab_final[$i]['val'] = $tab1[$current_val];
      $i++;
    }
    Et dans tab_final, tu as
    [0]['key'] = 18;
    [0]['val'] = "Entrée un";
    [1]['key'] = 1;
    [1]['val'] = "Seconde entrée";
    (...)

    En esperant que ca réponde (au moins en partie) a ta question.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Bon j'ai dut mal m'expliquer alors.

    Je souhaiterai trier mon tableau1 selon un ordre nom pas croissant ni decroissant mais bien precis. Cet ordre est contenu dans un tableau2

    Ainsi si mon tableau1 est :
    17 -> bonjour
    4 -> salut
    8 -> ca va
    2 -> oui super

    et mon tableau2 est

    0 -> 8
    1 -> 17
    2 -> 2
    3 -> 4

    Apres tris mon tableau1 sera :
    8 -> ca va
    17 -> bonjour
    2 -> oui super
    4 -> salut

    Voila il faut evidement conserver les correspondances entre clés valeur pour le tableau 1

    Merci de ta reponse en tout cas

  4. #4
    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 avec array_combine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    header('Content-type: text/plain');
    $tab1 = array(
        1 => 'Entrée un',
        18 => 'Seconde entrée',
        4 => 'Encore une entrée'
    );
     
    $tab2 = array(18, 1, 4);
     
    print_r(array_combine($tab2, $tab1));
    ?>
    Mais les hachages ne permettent généralement pas, de part leur structure interne, de rendre les éléments dans le même ordre que celui dans lequel ils ont été définis.

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Je doute qu'il y ait une fonction toute faite pour le faire.
    Par contre, ca n'est pas très compliqué non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $i = 0;
    while (isset($tab2[$i])) {
      $key = $tab2[$i];
      $val = $tab1[$key];
      $tab_final[$key] = $val;
      $i++;
    }
    Attention, code non testé, mais l'idée est là.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Merci de vos reponses,

    Je suis finalement passé par une autre solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $i=0;
    while($tableau1 = mssql_fetch_array($resultat))
    {
       $tableau_resultat["Numero"][$i] = $tableau2[$tableau1["Numero"]];
       $tableau_resultat["Libelle"][$i] = $tableau1["Libelle"];
    }
     
    if($tableau_resultat["Numero"][0] != "")
    {
       array_multisort($tableau_resultat["Numero"],$tableau_resultat["Libelle"]);
    }
    Ca a l'air de marcher.
    Merci encore

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

Discussions similaires

  1. [PHP 5.2] Trier un tableau en fonction d'un autre
    Par renaud26 dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2010, 16h16
  2. Réponses: 1
    Dernier message: 11/02/2008, 16h45
  3. [Tableaux] trier un tableau associatif
    Par cijez dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2006, 16h07
  4. [Tableaux] Trier un tableau [array]
    Par clemsouz dans le forum Langage
    Réponses: 2
    Dernier message: 15/05/2006, 13h33
  5. [Tableaux] Trier un tableau comme avec ORDER BY DESC
    Par Anduriel dans le forum Langage
    Réponses: 28
    Dernier message: 08/12/2005, 18h50

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