CSV Daten vergleichen
dave635061
- php
0 fastix®0 dave 6350610 fastix®
Hallo Leute,
ich hab da ein kleines (großes) Problem... Ich hab schon im Forumsarchiv gewühlt und auf selfphp geschaut.. kann aber so eine richtige Lösung nicht finden.... leider...
Also folgendes Problem
Ich habe 2 CSV Dateien,
rep.csv und repneu.csv
ich möchte nun mit fgetcsv die Daten auslesen... beider Dateien und miteinander vergleichen... wenn ein bestimmtes Feld übereinstimmt soll dieser Datensatz dann in eine neue Datei geschrieben werden die wir hier mal rep2.csv nennen wollen.
Leider funktioniert eine while in while-Schleife nicht.. war mein erster Gedanke... Vielleicht habt Ihr ne Lösung parat??? Ich weiß echt nicht mehr weiter... Dank Euch schon im vorraus...
Grüße Dave
Moin!
Also optimal sortierst Du beide Dateien vorher mit dem Systembefehl sort nach dem jeweiligen zu vergleichenden Feld.
Dann liest Du die Dateien zeilenweise in getrennte Arrays ($a[z_nr][s_nr], $b[z_nr][s_nr] ein.
Dann:
Setze $Merker auf 0
Baue eine Schleife (for $i=0...) über die Zeilen des ersten Arrays und eine zweite (for $k=$Merker...) über die Zeilen des zweiten Array's und vergleiche die entsprechenden Spalten.
Bei Übereinstimmung:
Fertig.
fastix®
rehuhu...
Also ich weiß ni ich bin zu blöd heut.... Ich steig nich ganz dahinter...
Also um ne Datei auszulesen muss ich doch mit ner while-schlefe arbeiten... while (fgetcsv.... )
so da les ich die erste Datei ein und erzeug folgendes array:
$zeile1=array($rowneu=>array($neu[0],$neu[1],$neu[2],$neu[3],$neu[4],$neu[5]));
so das selbe dann mit der zweiten datei... wobei die Variable zeile2[..][] heißt...
so und nu komm ich nicht weiter...
Genau an de Stelle hackt es bei mir... leider... :-(
Kannst mir nochma Starthilfe geben... bei mir steht heut echt einer auf der Leitung... sorry das ich Euch so auf den Wecke gehe...
gruß Dave
Moin!
Oh Gott!
Es geht doch recht einfach und zu Fuß mit:
$dateiname="/pfad/zu/file.csv"
$fp=fopen($dateiname,"r")
$datei=fread ($fp, filesize($dateiname));
$datei=str_replace("\r","",$datei_1);
#Bei Dateien aus Windows die "\r" entfernen
$datei=array explode("\n",$string);
for ($i=0; $i<count($datei_1) {
# den gehen wir durch...
$datei[$i]=explode(";",$datei[$i]);
# Wir trennen am Semikolon. Nimm was anderes, wenn Du was anderes als Trenner hast... CSV!=CSV
}
Übrigens: denke an die Speicherbegrenzung. Ist absehbar, dass dies alles mal größer werden _könnte_ brauchst Du eine Datenbank. Performant ist das auch nicht unbedingt.
fastix®