我正在尝试使用以下循环从csv数据生成唯一的CSV
文件。
$k =1;
foreach ($csv_tbl as $_csv) {
$filename = "Agent_" . $k . ".csv";
$file_path = "agents/$filename";
file_put_contents($file_path, $_csv);
if (file_exists($_csv)) {
header('Content-Description: File Transfer');
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=' . $filename);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($_csv));
readfile($_csv);
die();
}
$k++;
}
生成的第一个文件是完美的,只有它应该拥有的数据,即第一个csv
表。第二个文件包含所有21个文件的第一个和第二个表,这意味着第21个文件将包含所有表。
前两个文件的可视示例。
如何防止csv
文件中的重复表?
答案 0 :(得分:1)
由于您的foreach正在打印重复项,这意味着您的array $csv_tbl
包含重复值,您可以使用array_unqiue
从数组中删除重复值但是通过查看屏幕截图我可以看到callid是每条记录都有所不同。你的csv包含重复项吗?::
$k =1;
$csv_tbl = array_unique($csv_tbl);
foreach ($csv_tbl as $_csv) {
$filename = "Agent_" . $k . ".csv";
$file_path = "agents/$filename";
file_put_contents($file_path, $_csv);
if (file_exists($_csv)) {
header('Content-Description: File Transfer');
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=' . $filename);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($_csv));
readfile($_csv);
die();
}
$k++;
}