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


How to Merge CSV Files in PHP, Line by Line

我正在尝试用PHP将几个CSV文件合并在一起。由于这里的线程(组合2个CSV文件),我已经使用PHP将它们合并为整个文件,但我希望通过单独的行将文件合并在一起。

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

这就是我正在努力实现的,以防上述情况不清楚:

CSV1-1号线

CSV2-1号线

CSV3-1号线

CSV1-2号线

CSV2-2号线

CSV3-2号线

CSV1-3号线

CSV2-3号线

CSV3-3号线

并继续循环,直到CSV文件中没有剩余的行为止。

试试这个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));