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 à 2 dimensions


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut tri d'un tableau à 2 dimensions
    En préambule, je pense que je n'ai pas bien compris l'utilisation de array_multisort qui devrait m'aider grandement

    En gros, j'ai un tableau décomposé comme suit (créé dynamiquement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $table = array ( array(1,1,2,1,3,2,3,2,1), array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1), ... )
    Je souhaiterais trier chacun des petites tables internes par le premier élément de chaque table pour obtenir (dans mon exemple) (les valeurs qui suivent sont sans importance pour mon besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $table = array ( array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1), array(1,1,2,1,3,2,3,2,1), ... )
    En fait, chaque petite table correspond aux points d'une surface que je veux dessiner, et la première valeur est une distance. Un tri sur cette distance me permettant de dessiner les faces les plus éloignées en premier pour ne retrouver ensuite que les faces les plus proches qui recouvrent les faces éloignée.

    Un petit coup de pouce m'aiderait grandement

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut

    quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $table = array(array(1,1,2,1,3,2,3,2,1), array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1));
     
    foreach ($table as $v)
    {
        $values[] = $v[0];
    }
     
    array_multisort($values, $table);
    ou même ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $table = array(array(1,1,2,1,3,2,3,2,1), array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1));
    usort($table, function($a, $b) { return 100 * ($a[0] - $b[0]); });

  3. #3
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Merci, en fait, il faut que je crée une table annexe qui va me servir à trier ma table principale. C'est ce que je n'avais pas compris dans la fonction multisort.

    j'utiliserais la première solution que je comprends à défaut de ne pas comprendre la seconde (peut-être parce que j en'ai pas épluché la fonction usort

    Je teste dans la journée, et je viens valider la réponse merci.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Attention ! La deuxième soluce comporte une astuce de taille, sinon elle ne serait pas utilisable (la doc, toujours la doc, tout y est expliqué)

  5. #5
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Merci, le tri fonctionne...

    Même si le résultat final n'est pas celui attendu (j'ai du buggué ailleurs, je vais chercher)

    En attendant, je note ce sujet comme résolu.

    Pour la seconde solution proposée, je suis allé voir la doc, j'ai compris le principe et l'utilité (notamment trier sur plusieurs colonnes avec une priorité), mais c'est trop compliqué pour mon petit cerveau qui ne code qu'à peine plus d'une heure en moyenne par jour.

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Je ne vois pas quel est le problème avec array_multisort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $table = array ( array(1,1,2,1,3,2,3,2,1), array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1));
    array_multisort($table);
    print_r($table);
    renvoie bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array ( array(0.1,1,2,1,3,2,3,2,1), array(0.3,1,2,1,3,2,3,2,1), array(1,1,2,1,3,2,3,2,1) )

  7. #7
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Ca fonctionnait peut-être très bien, mais comme le résultat visuel attendu n'était pas au RDV, j'ai cherché à savoir pourquoi ça ne triait pas. En réalité, ce n'est pas que le tri n'était pas bon, c'est l'échantillon de tri qui était mauvais. Pour ne pas surcharger le serveur, j'avais pris le parti de dessiner morceau par morceau, sauf que ça se chevauchait. En mettant tout dans une table, en triant les faces et en dessinant dans le bon ordre (les faces les plus éloignées en premier, et les plus proches en dernier), le résultat est convaincant. http://calcul.ressorts.org/documents...ompression.pdf
    Il me reste à travailler sur les extrémités, puis à intégrer à mon site de calcul de ressorts en ligne pour créer un plan du ressort calculé et surtout de numéroter les plans réalisés pour ne pas avoir de chevauchement d'un plan réalisé avec celui d'un autre utilisateur.

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

Discussions similaires

  1. [Tableaux] Tri sur un tableau à 2 dimensions
    Par DrOOMMgba dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 19h47
  2. [Tableaux] Tri d'un tableau multi-dimensions
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2006, 10h08
  3. Réponses: 1
    Dernier message: 03/09/2006, 18h53
  4. tri d'un tableau à 2 dimensions
    Par kamalkam dans le forum ASP
    Réponses: 2
    Dernier message: 23/05/2006, 17h30
  5. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29

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