-3

PHP で複数の CSV ファイルをマージしようとしています。ここのスレッド ( Combining 2 CSV files )のおかげで、PHP を使用してファイル全体として既にマージされていますが、個々の行でファイルをマージしようとしています。

CSV 1から 1行目、から 1 行目などを読み取りCSV 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 ファイルに行がなくなるまでループを続けます。

4

1 に答える 1

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));
于 2013-06-22T15:09:20.183 に答える