php et fichier csv fusionner/grouper des lignes
Bonjour à tous,
Désolé par avance si je n'ai pas posté au bon endroit :)
Je dois manipuler un fichier csv pour le transformer en fichier XML.
Fichier d'entrée :
nom;prenom;email
dupont;marc;dupont@dupont.fr
dupont;marc;dupont@gmail.com
martin;rene;rene@gmail.com
mon fichier php
Code:
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
|
<?php
$fichier = 'test3.csv';
$sortie = 'test3.xml';
$contenu = fopen($fichier, 'r');
$ecriture = fopen($sortie, 'w');
$entete = fgetcsv($contenu, 1024, ";", '"');
$debut = '<fichier>' . "\n";
fwrite($ecriture, $debut);
while (($tab = fgetcsv($contenu, 1024, ";", '"')) !== FALSE)
{
fwrite($ecriture, "\t" . '<personne>' . "\n");
foreach ($tab as $cle => $valeur)
{
fwrite($ecriture, "\t\t" . '<' . $entete[$cle] . '>' . $valeur . '</' . $entete[$cle] . '>' . "\n");
}
fwrite($ecriture, "\t" . '</personne>' . "\n");
}
$fin = '</fichier>' . "\n";
fwrite($ecriture, $fin);
fclose($contenu);
fclose($ecriture);
?> |
Voilà l'affichage obtenu :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<fichier>
<personne>
<nom>dupont</nom>
<prenom>marc</prenom>
<email>dupont@dupont.fr</email>
</personne>
<personne>
<nom>dupont</nom>
<prenom>marc</prenom>
<email>dupont@gmail.com</email>
</personne>
<personne>
<nom>martin</nom>
<prenom>rene</prenom>
<email>rene@gmail.com</email>
</personne>
</fichier> |
Parfait me direz-vous !! Sauf que j'aimerais obtenir :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<fichier>
<personne>
<nom>dupont</nom>
<prenom>marc</prenom>
<email>dupont@dupont.fr</email>
<email>dupont@gmail.com</email>
</personne>
<personne>
<nom>martin</nom>
<prenom>rene</prenom>
<email>rene@gmail.com</email>
</personne>
</fichier> |
Donc pour résumer, je souhaiterais fusionner/grouper les lignes avec un nom et un prénom identique
J'ai fais des tests avec array_unique, mais rien donc je me tourne vers vous.
Merci par avance