我试图在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文件中没有任何行。
答案 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));