Hallo,
ich habe zwei csv dateien, die ich per php vergleichen will.
Dabei wird die Datei 1 gegen die Datei 2 verglichen. Datei 1 wird immer wieder neu durch ein Programm erstellt.
Hier mal ein Beispiel:
Datei 1.
10, Ralf, Hamburg
18, Stefan, Berlin
33, Norbert, Hintertupfingen
Datei 2:
10, Ralf, Hamburg
17, Jonas, München
33, Norbert, Hamburg
Als Ergebnis benötige ich eine Liste mit den unterschieden zwischen Datei 1 und Datei 2.
Es gibt drei Varianten:
a) fehlende Einträge (hier Nummer 17)
b) neue Einträge (1
c) geänderte Werte (33)
Ich habe nun folgendes Script gefunden, dass mir die beiden Dateien einliest und vergleicht
Als Ergebnis bekomme ich aber eine riesige Liste aller Zeilen, die auch nicht stimmt. Wenn Einträge fehlen (obiges beispiel die 17) kommt er aus dem Tritt und zeigt mir die folgende Zeile als fehlerhaft.
Kann man die Ausgabe irgendwie so begrenzen, dass er nur die Unterschiede ausgibt und irgendwie nicht aus dem tritt gerät bei fehlenden Einträgen?
Danke schon mal im Voraus.
Gruß Werner
ich habe zwei csv dateien, die ich per php vergleichen will.
Dabei wird die Datei 1 gegen die Datei 2 verglichen. Datei 1 wird immer wieder neu durch ein Programm erstellt.
Hier mal ein Beispiel:
Datei 1.
10, Ralf, Hamburg
18, Stefan, Berlin
33, Norbert, Hintertupfingen
Datei 2:
10, Ralf, Hamburg
17, Jonas, München
33, Norbert, Hamburg
Als Ergebnis benötige ich eine Liste mit den unterschieden zwischen Datei 1 und Datei 2.
Es gibt drei Varianten:
a) fehlende Einträge (hier Nummer 17)
b) neue Einträge (1
c) geänderte Werte (33)
Ich habe nun folgendes Script gefunden, dass mir die beiden Dateien einliest und vergleicht
PHP-Code:
<?php
$file1 = fopen("datei1.csv", "r");
while ($data = fgetcsv($file1, 1000, ",")) {
$array1[] = $data;
}
fclose($file1);
$file2 = fopen("datei2.csv", "r");
while ($data = fgetcsv($file2, 1000, ",")) {
$array2[] = $data;
}
fclose($file2);
echo "<p></p><p></p>Inhalt von Array 1<br />";
var_dump($array1);
echo "<p></p><p></p>Inhalt von Array 2<br />";
var_dump($array2);
echo "<p></p><p></p>Unterschied zwischen Array 1 und Array 2<br />";
for ($a = 0; $a < count($array1); $a++) {
$diff = array_diff_assoc($array1[$a], $array2[$a]);
var_dump($diff);
echo "<p>------------</p>";
}
?>
Kann man die Ausgabe irgendwie so begrenzen, dass er nur die Unterschiede ausgibt und irgendwie nicht aus dem tritt gerät bei fehlenden Einträgen?
Danke schon mal im Voraus.
Gruß Werner
Kommentar