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 tableau avec fonction


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut [Tableaux] tri tableau avec fonction
    bonjour, je cherche le meilleur de trier cela :

    S32 / S32,S41/ S22,S27 / S22,S31/ S22,S27,S26/ S22,S27,S24 /S32,S40

    en
    S32,
    S32,S41
    S32,S40
    S22,S27
    S22,S27,S26
    S22,S27,S24
    S22,S31
    donc je rencontre S32, et regarde les autres S32,* je trouve S32,S41 avant S32,S40 et garde l'ordre. je passe au suivant, je rencontre, S22,S27 , le garde etc

    je sais pas si je suis assez clair, en tout cas merci d'avance de vos lumières

  2. #2
    Membre régulier Avatar de guigouz
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 84
    Points : 102
    Points
    102
    Par défaut
    S'il s'agit d'un tableau, ce que tu cherches à faire devrait être facilement réalisé à l'aide de la fonction sort.
    Plus d'infos ici

    Bonne continuation
    Guigouz

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu commences toujours par SXX ? ou est-ce que ton tableau peut commencer par SXX,YY ?
    Autrement dit estce que les SXX,YY sont toujours après SXX ?

    D'autre part, c'est quoi ton format de départ ? un tableau à 1 dimensions qui contient des chaines ?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    le probleme de sort est qui me tri le tableau normalement, et j'obtiens 22,24 avant 22,26, normal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => S22,S27 [1] => S22,S31 [2] => S22,S27,S26 [3] => S22,S27,S24 [4] => S22,S27,S26,S25 [5] => S22,S27,S26,S30 [6] => S22,S31,S30 [7] => S22,S31,S30,S23 [8] => S22,S31,S30,S23,S25 [9] => S22,S31,S30,S23,S25,S28 [10] => )
    en fait cela représente, une série d'id, après recherche dans une bdd.

    il est important de respecter l'ordre de sortie, donc des clé.

    L'idée serait de les réorganiser comme précédemment énoncer.

    merci de vos participation, en tout cas

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Essaie ç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
     
    <?php
     
    $a = array("S32", "S32,S41", "S22,S27", "S22,S31", "S22,S27,S26", "S22,S27,S24", "S32,S40");
    $n = count($a);
    print_r($a);
     
    $b = array();
    for($i = 0 ; $i < $n ; ++$i) {
        $b[$i] = array_shift($a);
     
        $c = array();
        foreach($a as $index => $value) {
            if (substr($value, 0, strlen($b[$i])) == $b[$i]) {
                $c[] = $index;
            }
        }
        foreach($a as $index => $value) {
            if (substr($value, 0, strlen($b[$i])) != $b[$i]) {
                $c[] = $index;
            }
        }
        $d = array();
        foreach($c as $index) {
            $d[] = $a[$index];
        }
        $a = $d;
    }
    print_r($b);
    ?>
    Les noms de variables sont quelques peu criptiques, mais en décortiquant le code ça devrait aller... faut bien que tu bosses aussi

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut c bien on solutionne
    merci de ta réponse, et du temps que tu y a passé, cela fonctionne tres bien,
    j'ai planché aussi, et voila une seconde réponse, c à peu près la meme chose

    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
           $array= array("S22,S27","S22,S31","S22,S27,S26","S22,S27,S24","S22,S27,S26,S25","S22,S27,S26,S30","S22,S31,S30","S22,S31,S30,S23","S22,S31,S30,S23,S25","S22,S31,S30,S23,S25,S28");
     
              asort($array);
     
     
                           foreach ( $array as $key => $row) {
     
                    if(strlen($row) == 7){
                    $pos++;
                     }
                     $sort[$pos][$key]=$row;
     
                  ksort($sort[$pos]);
                    }
        print_r($sort);


    voila si d'autres regardes nos codes, et y trouves des choses à améliorer, je suis toujours preneur,

    merci

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    ton code ne respecte visiblement pas ton cahier des charges; Voici ce qui sort:
    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
    Array
    (
        [1] => Array
            (
                [0] => S22,S27
                [2] => S22,S27,S26
                [3] => S22,S27,S24
                [4] => S22,S27,S26,S25
                [5] => S22,S27,S26,S30
            )
    
        [2] => Array
            (
                [1] => S22,S31
                [6] => S22,S31,S30
                [7] => S22,S31,S30,S23
                [8] => S22,S31,S30,S23,S25
                [9] => S22,S31,S30,S23,S25,S28
            )
    
    )
    Les lignes en rouge ne devraient elles pas être ensembles ?
    J'obtiens un résultat différent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Array
    (
        [0] => S22,S27
        [1] => S22,S27,S26
        [2] => S22,S27,S26,S25
        [3] => S22,S27,S26,S30
        [4] => S22,S27,S24
        [5] => S22,S31
        [6] => S22,S31,S30
        [7] => S22,S31,S30,S23
        [8] => S22,S31,S30,S23,S25
        [9] => S22,S31,S30,S23,S25,S28
    )

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut et oui ,
    ouais, après avoir comparé les résultat, j'ai aussi vu la faille, je planche

    cela dit, c'est vrai que je ne voi pas d'autre solution, que le parcours du tableau en for foreach, ton code, est niquel

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/07/2008, 16h06
  2. [Tableaux] Remplir tableau avec ordre defini
    Par nicerico dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 10h28
  3. [Tableaux] Tri tableau avec underscore et chiffres
    Par __fabrice dans le forum Langage
    Réponses: 4
    Dernier message: 18/10/2006, 17h05
  4. [Tableaux] tri tableau avec date
    Par omelhor dans le forum Langage
    Réponses: 12
    Dernier message: 17/10/2006, 20h24
  5. [Tableaux] Tri tableau
    Par licorne dans le forum Langage
    Réponses: 3
    Dernier message: 20/03/2006, 12h14

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