有许多CSV
个文件,如下所示:a.csv
,b.csv
,aab.csv
等。
他们拥有相同的列和标题。现在我想将所有csv数据放入whole.csv
。只有一个标题。我该怎么办?
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文件放在同一目录中。
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
看看file_put_contents
。
您将打开每个CSV文件,然后使用file_put_contents
作为whole.csv
参数传递$filename
,将文件句柄作为$data
参数并使用FILE_APPEND
} flag告诉它附加内容而不是覆盖。