Bonjour,
Actuellement en cours de réalisation d'un projet de comparaison de données, je rencontre actuellement un problème lors de la création d'un tableau.
J'arrive à stocker les différences et les égalités dans des variables puis à les insérer dans un nouveau tableau qui sera envoyé dans un fichier csv. Le soucis c'est que j'ai mes lignes où il n'y a que des égalités puis le problème c'est que si dans une ligne il y a une différence toutes les autres données disparaissent.
J'aimerai pouvoir faire en sorte que les différences viennent écraser les anciennes données plus valables.
Admettons, j'ai un tableau où en 1ere ligne j'ai : ("Raymond", "Pierre", "2nde7") et un autre tableau : ("Raymond", "Pierre", "1ere3"), j'aimerai que 1ere3 viennent écraser la donnée 2nde7.
Je vous montre le code ci-dessous
Merci d'avance
Actuellement en cours de réalisation d'un projet de comparaison de données, je rencontre actuellement un problème lors de la création d'un tableau.
J'arrive à stocker les différences et les égalités dans des variables puis à les insérer dans un nouveau tableau qui sera envoyé dans un fichier csv. Le soucis c'est que j'ai mes lignes où il n'y a que des égalités puis le problème c'est que si dans une ligne il y a une différence toutes les autres données disparaissent.
J'aimerai pouvoir faire en sorte que les différences viennent écraser les anciennes données plus valables.
Admettons, j'ai un tableau où en 1ere ligne j'ai : ("Raymond", "Pierre", "2nde7") et un autre tableau : ("Raymond", "Pierre", "1ere3"), j'aimerai que 1ere3 viennent écraser la donnée 2nde7.
Je vous montre le code ci-dessous
Merci d'avance
<?php
if(isset($_POST['envoyer'])){
if (is_uploaded_file($_FILES['avatar']['tmp_name']))
{
$filename = $_FILES['avatar']['tmp_name'] . "'.";
}
else {
echo "Nom du fichier : '". $_FILES['avatar']['tmp_name'] . "'.";
}
$a1=Array();
$row = 1;
if (($handle = fopen($_FILES['avatar']['tmp_name'], "r")) !== FALSE) {
$key = 0; // Set the array key.
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$count = count($data); //get the total keys in row
$row++;
//insert data to our array
for ($i=0; $i < $count; $i++) {
$a1[$key][$i] = $data[$i];
echo $a1[$key][$i] . "<br />\n";
}
$key++;
}
fclose($handle); //close file handle
}
$a2=Array();
$row = 1;
if (($handle1 = fopen($_FILES['avatar2']['tmp_name'], "r")) !== FALSE) {
$key1 = 0; // Set the array key.
while (($data1 = fgetcsv($handle1, 1000, ",")) !== FALSE) {
$count1 = count($data1); //get the total keys in row
$row++;
//insert data to our array
for ($i1=0; $i1 < $count1; $i1++) {
$a2[$key1][$i1] = $data1[$i1];
echo $a2[$key1][$i1] . "<br />\n";
}
$key1++;
}
fclose($handle1); //close file handle
}
foreach ($a1 as $k1 => $v1) {
if ($u = array_diff($a2[$k1], $a1[$k1]))
{
if($a2[$k1] !== $u){
$update_items[$k1] = $u;
}
}
elseif ($p = array_intersect($a2[$k1], $a1[$k1])){
if($a2[$k1] === $p){
$update_items[$k1] = $p;
}
}
}
print_r($update_items);
// Paramétrage de l'écriture du futur fichier CSV
$chemin = 'fichier.csv';
$delimiteur = ','; // Pour une tabulation, utiliser $delimiteur = "t";
// Création du fichier csv (le fichier est vide pour le moment)
// w+ : consulter http://php.net/manual/fr/function.fopen.php
$fichier_csv = fopen($chemin, 'w+');
// Si votre fichier a vocation a être importé dans Excel,
// vous devez impérativement utiliser la ligne ci-dessous pour corriger
// les problèmes d'affichage des caractères internationaux (les accents par exemple)
fprintf($fichier_csv, chr(0xEF).chr(0xBB).chr(0xBF));
// Boucle foreach sur chaque ligne du tableau
foreach($update_items as $ligne){
// chaque ligne en cours de lecture est insérée dans le fichier
// les valeurs présentes dans chaque ligne seront séparées par $delimiteur
fputcsv($fichier_csv, $ligne, $delimiteur);
}
// fermeture du fichier csv
fclose($fichier_csv);
}
?>