Array Unique?????

Merevihn
Invité n'ayant pas de compte PHPfrance

28 mars 2013, 12:13

Bonjour tout le monde, voilà je cherche à gérer les doublons de ma première colonne dans mon fichier CSV au moyen d'un array unique seulement ça ne marche pas je n'arrive pas à voir mon erreur :

Code : Tout sélectionner

<?php if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $a = array($data[0]); var_dump($a); $b = array_unique ($a); var_dump($b); } fclose($handle); } ?>
il me tourne ceci :

array (size=1)
0 => string 'Sacs en Papier' (length=14)
array (size=1)
0 => string 'Sacs en Papier' (length=14)
array (size=1)
0 => string 'Sacs en Papier' (length=14)
array (size=1)
0 => string 'Sacs en Papier' (length=14)
array (size=1)
0 => string 'Sacs en Plastique' (length=17)
array (size=1)
0 => string 'Sacs en Plastique' (length=17)
array (size=1)
0 => string 'Sacs en Plastique' (length=17)
array (size=1)
0 => string 'Sacs en Plastique' (length=17)
array (size=1)
0 => string 'Sacs PP Tissés' (length=14)
array (size=1)
0 => string 'Sacs PP Tissés' (length=14)
array (size=1)
0 => string 'Sacs PP Tissés' (length=14)
array (size=1)
0 => string 'Sacs PP Tissés' (length=14)

alors que je souhaite quelque chose comme :

array (size=1)
0 => string 'Sacs en Papier' (length=14)
array (size=1)
0 => string 'Sacs en Plastique' (length=17)
array (size=1)
0 => string 'Sacs PP Tissés' (length=14)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 mars 2013, 14:07

Salut,


Il faudrait le faire sur un tableau regroupant les resultars et pas autant de fois que as de ligne.
Ensuite la doc indique bien
Note: Notez que array_unique() ne fonctionne pas avec des tableaux multi-dimensionnels.
Vu que tu boucle déjà sur le fichier autant faire le tri dedans.
Il va te falloir parcourir le tableau résultat pour savoir si c'est déjà présent.


A partir du code que je t'ai fournis dans ce message, si le but c'est de ne pas insérer des doublons dans la table il faut ajouter une requête qui compte le nombre de ligne avec le même nom si c'est zéro insertion sinon on passe à l'intégration suivante.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

28 mars 2013, 14:41

Ce ne serait pas ça par hasard:
<?php
$a = array();
if (($handle = fopen("test.csv", "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
     {
        $a[] = array($data[0]);
      }
    fclose($handle);
$b = array_unique ($a);
}
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 mars 2013, 20:52

doc array_unique :
Note: Notez que array_unique() ne fonctionne pas avec des tableaux multi-dimensionnels.
et c'est le cas la :mrgreen:


@+
Il en faut peu pour être heureux ......