[PHP] Fusionner deux tableaux sur une clé
Résolu
ragnarok
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite fusionner deux tableaux dont les données sont issues de deux fichiers à plat.
La structure des fichiers est la suivante :
ville;code;valeur;date
les contraintes :
- le code du fichier 1 est A et le code du fichier 2 est B
- il ne peut y avoir qu'une seule fois une ville par fichier et par date, seule la valeur peut etre différente
- il y a le meme nombre de ligne dans fichier et fichier 2
Exemple :
Je souhaite transformer en :
Merci à vous !!
Je souhaite fusionner deux tableaux dont les données sont issues de deux fichiers à plat.
La structure des fichiers est la suivante :
ville;code;valeur;date
les contraintes :
- le code du fichier 1 est A et le code du fichier 2 est B
- il ne peut y avoir qu'une seule fois une ville par fichier et par date, seule la valeur peut etre différente
- il y a le meme nombre de ligne dans fichier et fichier 2
Exemple :
fichier 1 paris;A;15;2010-06-10 paris;A;10;2010-05-25 marseille;A;16;2010-06-10
fichier 2 paris;B;15;2010-06-10 paris;A;10;2010-05-25 marseille;B;15;2010-06-10
Je souhaite transformer en :
ville;valeurA;valeurB;valeurA-B;date paris;15;15;0;2010-06-10 paris;10;10;0;2010-05-25 marseille;16;15;1;2010-06-10
Merci à vous !!
A voir également:
- Php fusionner 2 tableaux
- Fusionner 2 tableaux excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment fusionner des pdf sans logiciel - Guide
- Fusionner 2 cellules excel - Guide
- Fusionner mp3 - Télécharger - Audio & Musique
3 réponses
une solution ,je n'ai pas fait de test
<?php //on va lire les fihciers, exploder chaque ligne par rapport à ; //paris;A;15;2010-06-10 //et empiler ça dans un array multidimentions //array[ville][date][A ou B][valeur] //fonction php function empile_dans_array($array_fichier,$array_final,$lettre){ //empilage dans l'array for($i=0;$i<sizeof($array_fichier1);$i++){ //on parcours chaque ligne //explode de la ligne $array_ligne=explode(';',$array_fichier1[$i]); $array_final[$array_ligne[0]][$array_ligne[3]][$lettre]['valeur'] = $array_ligne[2]; } return $array_final; } $array_final=array(); //init array //lecture fichier 1 $array_fichier1=file('fichier1.txt'); //appel fonction $array_final = empile_dans_array($array_fichier1,$array_final,'A'); $array_fichier1=array(); //on vide //lecture fichier 2 $array_fichier2=file('fichier2.txt'); //appel fonction $array_final = empile_dans_array($array_fichier2,$array_final,'B'); $array_fichier2=array(); //on vide //calculs et affichage if(sizeof($array_final)>0){ echo '<table>'; echo '<tr><th>Ville</th><th>Valeur A</th><th>Valeur B</th><th>A-B</th><th>Date</th></tr>'; foreach($array_final as $ville=>$s_array1){ foreach($s_array1 as $date=>$s_array2){ echo '<tr><td>'.$ville.'</td><td>'.$s_array2['A'].'</td><td>'.$s_array2['B'].'</td><td>'.($s_array2['A'] - $s_array2['B']).'</td><td>'.$date.'</td></tr>'; } } echo '</table>'; } ?>
Dans la fonction, remplacer $array_fichier1 par $array_fichier
Et pour l'affichage, ajout de ['valeur']
echo '<tr><td>'.$ville.'</td><td>'.$s_array2['A']['valeur'].'</td><td>'.$s_array2['B']['valeur'].'</td><td>'.($s_array2['A']['valeur'] - $s_array2['B']['valeur]).'</td><td>'.$date.'</td></tr>';
Et ça roule impec' !!
Merci.
Et pour l'affichage, ajout de ['valeur']
echo '<tr><td>'.$ville.'</td><td>'.$s_array2['A']['valeur'].'</td><td>'.$s_array2['B']['valeur'].'</td><td>'.($s_array2['A']['valeur'] - $s_array2['B']['valeur]).'</td><td>'.$date.'</td></tr>';
Et ça roule impec' !!
Merci.