1

次のような多くのCSVファイルがあります: a.csvb.csvなどaab.csv

同じ列とヘッダーを保持します。ここで、すべての csv データを に入れたいと思いますwhole.csv。ヘッダーは1つだけ。どうすればいいですか?

a.csvデータ:

header1 title post.....

test   who  posand

b.csvデータ:

header1 title post.....

head   she  pnow

など……

whole.csv には、すべての csv データが含まれます。例えば:

header1 title post.....

head   she  pnow
test   who  posand

次のコードを試しましたが、取得できません:

$csvs = glob("*.csv");

foreach($csvs as $csv) {
  $row = 1;
  if (($handle = fopen($csv, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
      $fp = fopen("whole.csv", 'w');
      fputcsv($fp, $data);
      $row++;
    }
    fclose($handle);
  }
}

すべての CSV ファイルを同じディレクトリに配置しました。

4

2 に答える 2

1

入力 csv ファイルごとに、結果の csv ファイルを書き込みモードで開いています。

$fp = fopen("whole.csv", 'w');

whole.csv!!の内容を消去します。

ループの外で一度だけファイルを開き、whole.csv書き込みを続ける必要があります。

$csvs = glob("*.csv");
$fp   = fopen("whole.csv", 'w');

foreach($csvs as $csv) {
  $row = 1;
  if (($handle = fopen($csv, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
      fputcsv($fp, $data);
      $row++;
    }
    fclose($handle);
  }
}
于 2012-12-28T09:34:56.917 に答える
0

をご覧くださいfile_put_contents

各 CSV ファイルを開き、パラメーターとしてfile_put_contents渡し、ファイル ハンドルをパラメーターとして使用し、フラグを使用して上書きではなく内容を追加するように指示します。whole.csv$filename$dataFILE_APPEND

于 2012-12-28T14:29:09.827 に答える