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] Supprimé doublon dans un array


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut [Tableaux] Supprimé doublon dans un array
    Bonjour,

    J'essaie de supprimer les doublons dans un array, mais cela ne fonctionne pas correctement :

    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
    31
    32
    33
    34
    <?php 
    $file = "fichiers_csv/employeakf.csv";
    $taille = 1024;
    $delimiteur = ";";
    /* ouverture en lecture */
    if($fp = fopen($file,"r")) {
        /* extraction d'une ligne */
     
    	$dataDirection = array();
     
    	while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    	{						
    		if(!empty($ligne[9]) && !empty($ligne[10]))
    		{
    			$dataDirection[] = array($ligne[9],$ligne[10]);
    		}
    	}
     
    	$dataDirectionSansDoublons = array_unique($dataDirection); // Supprime les doublons
     
    	for($i=0;$i<count($dataDirectionSansDoublons);$i++)
    	{
    		echo $dataDirectionSansDoublons[$i][0]; //Ligne & colonne
    		echo ';';
    		echo $dataDirectionSansDoublons[$i][1]; //Ligne & colonne
    		echo '<br>';
    	}
     
        /* fermeture fichier */
        fclose ($fp);
    } else {
        echo "Ouverture impossible.";
    }
    ?>
    je me suis surement trompé...

    Auriez vous une solution

    Merci d'avance

    P.S : j'ai 1300 enregistrement dans mon fichier CVS et normalement je devrai retrouvé une 50 d'enregistrement non doublé

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    	{						
    		if(!empty($ligne[9]) && !empty($ligne[10]))
    		{
    			$dataDirection[] = array($ligne[9],$ligne[10]);
    		}
    	}
     
    	$dataDirectionSansDoublons = array_unique($dataDirection); // Supprime les doublons
    la fonction array_unique n'est pas récursive, tu ne peux pas l'utiliser sur un tableau multidimensionnel.

    je n'ai pas encore lu tout ton code mais si jamais tu n'as pas besoin de garder l'association valeur / clé ... il a y ce genre de code qui peut te donner une piste.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function array_unique_FULL($array) {
      foreach($array as $k => $v) {
        if (is_array($v)) {
          $ret = array_unique_FULL(array_merge($ret, $v));
        } else {
          $ret[$k] = $v;
        }
      } //for
     
      return array_unique($ret);
    }
    un tableau contient toutes les valeurs et là seulement la fonction array_unique peut être utilisé.
    Zend PHP5 Certification
    MySQL 4 Core Certification

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    j'ai cru comprendre que vous utilisez la fonction array_unique sur un tableau de tableaux. Donc la fonction compare array avec array, qui est toujours TRUE et au final, n'en garde qu'un seul et unique.

    Cordialement,
    DaRiaN.

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    ok, il y a pas moyen de rendre mon tableau unique (pas un tableau de tableau) ?

    j'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function array_unique_FULL($array) {
      foreach($array as $k => $v) {
        if (is_array($v)) {
          $ret = array_unique_FULL(array_merge($ret, $v));
        } else {
          $ret[$k] = $v;
        }
      } //for
     
      return array_unique($ret);
    }
    j'ai des erreurs sur array_merge() et array_unique

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Je n'ai rien compris, essayez d'utiliser ce script modifié (et non testé).

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php 
    $file = "fichiers_csv/employeakf.csv";
    $taille = 1024;
    $delimiteur = ";";
    /* ouverture en lecture */
    if($fp = fopen($file,"r")) {
        /* extraction d'une ligne */
     
    	$dataDirection = array();
    	$comparaison = array();
            $dataDirectionSansDoublons = array();
     
    	while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    	{						
    		if(!empty($ligne[9]) && !empty($ligne[10]))
    		{
    			$dataDirection[] = array($ligne[9],$ligne[10]);
    			$comparaison[] = $ligne[9].$ligne[10];
    		}
    	}
     
    	$comparaison = array_unique($comparaison);
     
    	foreach ($comparaison as $cle => $val) $dataDirectionSanDoublons[] = $dataDirection[$cle];
     
    	for($i=0;$i<count($dataDirectionSansDoublons);$i++)
    	{
    		echo $dataDirectionSansDoublons[$i][0]; //Ligne & colonne
    		echo ';';
    		echo $dataDirectionSansDoublons[$i][1]; //Ligne & colonne
    		echo '<br>';
    	}
     
        /* fermeture fichier */
        fclose ($fp);
    } else {
        echo "Ouverture impossible.";
    }
    ?>

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    j'ai rien qui s'affiche... snif... je vais essayer de débuggé votre script. merci encore de votre aide !

    d'après mes tests, le problème vient du foreach...

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    plus exactement c'est ceci qui ne fonctionne pas bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dataDirectionSanDoublons[] = $dataDirection[$cle]

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    c'est bon, problème d'orth d'une variable ! merci de ton aide !!!


  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Désolé, j'ai du mal à coder sur l'éditeur texte du forum.

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    ce n'est pas grave ! un grand merci à toi pour ton aide !
    J'ai bien avancé dans mon script, plus qu'un petit problème et j'ai fini !
    @+

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

Discussions similaires

  1. [Tableaux] Recherche évoluée dans un array PHP
    Par fanfouer dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2008, 13h23
  2. [MySQL] Supprimer doublon dans une liste
    Par Gad29 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 14h13
  3. [Tableaux] Mettre un " dans un array()
    Par yazerty dans le forum Langage
    Réponses: 7
    Dernier message: 17/03/2007, 10h02
  4. Supprimer doublons dans requete
    Par fifoux dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/03/2007, 11h54
  5. [Tableaux] supprimer doublon d'une colonne
    Par melisse dans le forum Langage
    Réponses: 4
    Dernier message: 22/02/2007, 09h01

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