2017-10-13 2 views
0

여러 CSV 파일을 병합하려고하지만이를 수행 할 수 없습니다. 제 코드를 잘 보아주세요. 내 코드가 뭐가 잘못 됐는지 몰라. csvfiles은 여러 개의 동일한 형식의 파일이 들어있는 디렉토리입니다.여러 개의 CSV 파일을 병합합니다.

Download Sample CSV Files

내 코드

$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

어떤 오류 코드를 실행할 때 직면합니까? – shahsani

+0

오류 없음, 논리적으로 파일을 병합해야하지만 빈 데이터로 생성 된 새로운 merge.csv 파일 –

+0

즉, 'if (...)'조건 중 하나라도 '거짓'결과를 제공합니다. – shahsani

답변

1

일부 관찰 : 어떤 점에서

  • opendir($csvdir) 또한 merge.csv 파일이 포함됩니다. 당신은 그것을 피하고 싶습니다. 그것을 별도로 유지하십시오.

  • 최소한 파일 조작을 유지하십시오. 루프의 모든 .csv 파일에 대해 merge.csv에 글을 씁니다. 대신 루프에 쓸 데이터를 수집하고 한 번만 작성하십시오.

  • file_get_contents($file);에 잘못된 파일 내용이 표시됩니다. $file에는 전체 경로가 아닌 파일 이름 만 포함됩니다.

  • $test는 사용되지 않습니다. 여기

일하고 코드 :

<?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); 
관련 문제