问题描述
我想在PHP中合并几个CSV文件在一起。我已经将它们合并为整个文件使用PHP感谢这里的线程( ),但我正在寻找合并文件在一起的个别行。
I am trying to merge several CSV files together in PHP. I already have them merged as whole files using PHP thanks to the thread here (Combining 2 CSV files), however I am looking to merge the files together by individual line.
我想从 CSV 1
中读取第1行,从 CSV 2第1行
等等,然后继续第2,3行等。
- 在每个循环的数组中的文件之间循环。我没有在PHP中解析文件,所以我不知道从哪里开始完成这个。
I would like to read line 1 from CSV 1
, line 1 from CSV 2
, and so forth, then proceed to line 2, 3, etc.
- Cycling between the files in the array with each loop. I have not worked with parsing files in PHP much, so I'm not sure where to begin to accomplish this.
这是我想要完成的,万一以上不明确:
This is what I am trying to accomplish, in case the above was not clear:
CSV2 1
CSV3 - 第1行
CSV3 - Line 1
CSV1 - 第2行
CSV1 - Line 2
CSV2 - 第2行
CSV2 - Line 2
CSV3 - 第2行
CSV3 - Line 2
CSV1 - 第3行
CSV1 - Line 3
CSV2 - 第3行
CSV2 - Line 3
CSV3 - 第3行
CSV3 - Line 3
....继续循环,直到CSV文件中没有行。
.... And continue to loop until there are no lines left in the CSV files.
推荐答案
尝试这个PHP代码(获取 file()
)。:
Try this php code (gets the lines with 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));
这篇关于如何在PHP中逐行合并CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!