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 d'un tableau selon 8 valeurs


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut Tri d'un tableau selon 8 valeurs
    Bonjour,

    j'ai un tableau qui peut contenir de 2 à 8 valeurs parmi cette liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab = array ('000', 100, 110, 101, 111, '010', '011', '001');
    Je reçois un tableau qui contient donc de 2 à 8 valeurs dans un ordre aléatoire et le veux le classer selon l'ordre du tableau de base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $tab_out = array ();
    While (list (, $v) = each ($tab_in))
    {
    $key = array_search ($v, $tab);
     
    $tab_out[$key] = $v;
    }
     
    ksort ($tab_out );
    Cela devrait marcher mais je me demande s'il n'est pas possible de faire plus simple avec des fonctions.

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie ça.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $tab    = array('000', 100, 110, 101, 111, '010', '011', '001');
    $tabIn  = array('001','111','000','011');
    $array = array_intersect($tab,$tabIn);
    print_r($array);
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Merci de ta réponse, array_intersect fonctionne, je suppose que c'est l'ordre du premier tableau en argument qui est appliqué, bon à savoir.
    Je vais jeter un œil dans la doc de array_intersect avant de cocher "Résolu".

    Petit détail, il faut impérativement mettre entre apostrophes toutes les valeurs de $tab_tri, ce qui n'était pas indispensable avec ma boucle.

    J'ai modifié l'ordre dans tab_tri, cela n'a rien à voir, mais il faut les apostrophes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_tri = array ('000', '100', '010', '001', '110', '101', '011', '111');

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Citation Envoyé par boteha Voir le message
    Bonjour,

    Petit détail, il faut impérativement mettre entre apostrophes toutes les valeurs de $tab_tri, ce qui n'était pas indispensable avec ma boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_tri = array ('000', '100', '010', '001', '110', '101', '011', '111');
    Parce que php n'est pas un langage typé. Si tu as des valeurs numériques il suffit qu'aucun des tabeaux n'ait d'apostrophes et ce sera bon. Il est normal que '001' soit différent de 1.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 676
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Ok, deux précisions sur array_intersect :

    Ce sont les clés du premier tableau en argument qui sont conservées (d'où la solution à mon problème).

    Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/04/2012, 17h06
  2. Réponses: 3
    Dernier message: 27/04/2009, 16h08
  3. tri d'un hash selon la valeur
    Par Jasmine80 dans le forum Langage
    Réponses: 10
    Dernier message: 19/02/2009, 10h14
  4. Réponses: 4
    Dernier message: 06/03/2007, 13h35
  5. [XSLT] Tri personalisé selon des valeurs
    Par Clad3 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/07/2006, 14h46

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