如何在PHP中逐行合并CSV文件

时间:2013-06-22 14:33:47

标签: php parsing csv

我试图在PHP中将几个CSV文件合并在一起。感谢这里的线程(Combining 2 CSV files),我已经将它们合并为使用PHP的整个文件,但是我希望通过单独的行合并文件。

我想从CSV 1读取第1行,从CSV 2读取第1行,依此类推,然后继续line 2, 3, etc. - 在每个循环中在数组中的文件之间循环。我没有在PHP中解析文件很多,所以我不知道从哪里开始实现这一点。

这是我想要完成的,以防上述情况不明确:

  

CSV1 - 第1行

     

CSV2 - 第1行

     

CSV3 - 第1行

     

CSV1 - 第2行

     

CSV2 - 第2行

     

CSV3 - 第2行

     

CSV1 - 第3行

     

CSV2 - 第3行

     

CSV3 - 第3行

....然后继续循环,直到CSV文件中没有任何行。

1 个答案:

答案 0 :(得分:2)

试试这个php代码(获取file()的行)。:

<?php
$csv1 = file('csv1.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$csv2 = file('csv2.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$csv3 = file('csv3.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = max(count($csv1), count($csv2), count($csv3));
$finalcsv = array();
for($i=0; $i<$lines; $i++) {
  if(isset($csv1[$i])) $finalcsv[] = $csv1[$i];
  if(isset($csv2[$i])) $finalcsv[] = $csv2[$i];
  if(isset($csv3[$i])) $finalcsv[] = $csv3[$i];
}

file_put_contents('final_data.csv', implode(PHP_EOL, $finalcsv));