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

PHP & Base de données Discussion :

recuperer les doublons dans un array multidimentionnel [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut recuperer les doublons dans un array multidimentionnel
    je me suis penché depuis pas mal de temps sur ce problème sans succès .
    j'ai un tableau array de cette façon
    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
     
        [46] => Array
            (
                [fich] => cmd_f
                [ref] => 12V 16A 
                [qty] => 5
                [pa] => $24,82
            )
     
        [34] => Array
            (
                [fich] => cmd_f
                [ref] => 12V-2A
                [qty] => 300
                [pa] => $2,88
            )
     
        [16] => Array
            (
                [fich] => cdm_stat
                [ref] => 12V-2A
                [qty] => 300
                [pa] => 3,54
            )
    j'aimerai que quand il y a un doublon sur le champ ref (dans cette exemple c'est 12v-2a)
    j'aimerai récupérer dans un autre tableau ayant comme structure ceci:
    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
     
        [1] => Array
            (
                [fich] => cmd_f
                [ref] => 12V 16A 
                [qty] => 5
                [pa] => $24,82
                [fich1] => 
                [ref1] => 
                [qty1] => 
                [pa1] => 
            )
     
        [2] => Array
            (
                [fich] => cmd_f
                [ref] => 12V-2A
                [qty] => 300
                [pa] => $2,88
                [fich1] => cdm_stat
                [ref1] => 12V-2A
                [qty1] => 300
                [pa1] => 3,54
            )
    merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    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 de départ avec des doublons
    $arrayInitial = array();
    //Array temporaire
    $arrayTemp = $arrayInitial;
    //Array final
    $arrayFinal = array();
    foreach ( $arrayInitial as $value ) {
    	foreach ( $arrayTemp as $value2 ) {
    		if ( $value['fich'] == $value2['fich'] && $value['qty'] == $value2['qty'] && $value['pa'] == $value2['pa'] ) {
    			if ( $value['ref'] != $value2['ref'] ) {
    			 array_push($arrayFinal, $value);
    			}
    		}
    		else {
    			array_push($arrayFinal, $value);
    		}
    	}
    }
     
    print_r($arrayFinal);
    Ca devrait te soulager.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    oh la la un métèorite est passé pour m'aider.
    je teste de suite
    merci

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    je ne pense pas que cela soit une très bonne approche de changer les clés du tableau à chaque doublon trouvé : fiche -> fiche1 -> fiche2... Il serait préférable de créer ton tableau différemment : Array([] => Array(ref => Array([] => Array(cle => valeur)))). Tu isoles les références qui te servent à indentifier tes doublons et tu y rattaches les doublons trouvés tout en préservant leurs clés.
    De cette manière pas besoin de savoir si la clé est fiche1 ou fiche2, elle sera toujours fiche quel que soit le doublons lu.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    [/codeinline] Il serait préférable de créer ton tableau différemment : Array([] => Array(ref => Array([] => Array(cle => valeur)))).
    oh là.
    je ne sais pas quelle sera la structure de ce tableau
    un exemple m'aiderait à mieux comprendre

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $data = array(
       array('fich' => 'cmd_f', 'ref' => '12V 16A', 'qty' => 5, 'pa' => '$24,82'),
       array('fich' => 'cmd_f', 'ref' => '12V-2A', 'qty' => 300, 'pa' => '$2,88'),
       array('fich' => 'cmd_stat', 'ref' => '12V-2A', 'qty' => 300, 'pa' => '$3,54')
    );
     
    $result = array();
    foreach($data as $details) {
       $result[$details['ref']][] = array_diff_key($details, array('ref' => null));
    }
    ?>
    Tu obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array(
       [12V 16A] => Array([0] => Array([fich] => cmd_f    [qty] => 5   [pa] => $24,82))
     
       [12V-2A]  => Array([0] => Array([fich] => cmd_f    [qty] => 300 [pa] => $2,88)
                          [1] => Array([fich] => cmd_stat [qty] => 300 [pa] => $3,54))
    )
    Tes doublons sont regroupés par référence et j'ai simplifié la structure du tableau dans le poste précédent en Array(ref => Array([] => data))

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

Discussions similaires

  1. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  2. Réponses: 5
    Dernier message: 25/07/2005, 14h03
  3. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29
  4. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 12h18
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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