2017-10-13 2 views
0

Ich versuche, mehrere CSV-Dateien zusammenzuführen, aber nicht dazu in der Lage. Bitte schauen Sie sich meinen Code an. Ich weiß nicht, was mit meinem Code falsch ist. csvfiles ist ein Verzeichnis, das mehrere Dateien im selben Format enthält.Mehrere CSV-Dateien zusammenführen

Download Sample CSV Files

My-Code

$csvdir = "./csvfiles/"; 
$result = fopen('./csvfiles/merge.csv', 'w'); 
$test=""; 
if (is_dir($csvdir)) { 
    if ($handle = opendir($csvdir)){ 
     while (($file = readdir($handle)) !== false) { 
      if (substr($file, -4) === ".csv") { 
       $csvcontent = file_get_contents($file); 
       fwrite($result, $csvcontent); 
      } 
     } 
     closedir($handle); 
    } 
} 
fclose($result); 
+0

Welche Fehler haben Sie Gesicht, wenn Sie den Code ausführen? – shahsani

+0

Kein Fehler, logisch sollte es Dateien zusammenführen, aber neue merge.csv-Dateien, die mit leeren Daten erstellt wurden –

+0

Das bedeutet, dass jede Ihrer 'if (...)' Bedingung ein 'false' Ergebnis gibt. – shahsani

Antwort

1

Einige Beobachtungen:

  • An einem gewissen Punkt opendir($csvdir) wird auch Ihre merge.csv Datei. Sie möchten das vermeiden. Halte es getrennt.

  • Dateioperationen auf Minimum halten. Für jede .csv-Datei in Ihrer Schleife schreiben Sie an Ihre merge.csv. Sammeln Sie stattdessen die Daten, die Sie in Ihre Schleife schreiben möchten, und schreiben Sie nur einmal.

  • Sie erhalten den falschen Dateiinhalt in file_get_contents($file);. $file enthält nur den Dateinamen, nicht den vollständigen Pfad.

  • $test wird nie verwendet.

Hier arbeitet Code:

<?php 

$csvdir = "./csvfiles/"; 
$csvcontent = ''; 
if (is_dir($csvdir)) { 
    if ($handle = opendir($csvdir)) { 
     while (($file = readdir($handle)) !== false) { 
      if (substr($file, -4) === ".csv") { 
       $csvcontent .= file_get_contents($csvdir . $file); 
      } 
     } 
     closedir($handle); 
    } 
} 

$result = fopen('./merge.csv', 'w'); 
fwrite($result, $csvcontent); 
fclose($result); 
Verwandte Themen