为什么 fputcsv 在 csv 中产生额外的空白列
why fputcsv produce extra blank column in csv
我正在尝试从我的 csv 中删除不必要的列。我所做的是从当前的 csv 中读取并使用 fputcsv 生成一个新的。但是,数据混乱,因为 fputcsv 在 $data[21]
之前添加了额外的空白列。下面是我的代码
$file_path = 'test.csv';
$file_output = 'new.csv';
if (file_exists($file_path) && filesize($file_path) > 0) {
if (false !== ($read_file = fopen($file_path, 'r'))) {
$output_file = fopen($file_output, 'w');
while (false !== ($data = fgetcsv($read_file))) {
$outputData = array($data[1], $data[6], $data[19], $data[20],
$data[21]);
fputcsv($output_file, $outputData);
}
}
fclose($read_file);
fclose($output_file);
}
希望您在这里提到了正确的数组顺序:
$outputData = array($data[1], $data[6], $data[19], $data[20],
$data[21]);
如果数据索引不会 found/defined 那么 fputcsv() 将在新的 csv 中添加额外的列。
从不同的列数来看,似乎需要先删除文件,然后再 运行 您的代码。您可能希望在执行开始时 unset
文件。
if (file_exists($file_output)) {
unset($file_output);
}
// continue with getting and populating CSV
我正在尝试从我的 csv 中删除不必要的列。我所做的是从当前的 csv 中读取并使用 fputcsv 生成一个新的。但是,数据混乱,因为 fputcsv 在 $data[21]
之前添加了额外的空白列。下面是我的代码
$file_path = 'test.csv';
$file_output = 'new.csv';
if (file_exists($file_path) && filesize($file_path) > 0) {
if (false !== ($read_file = fopen($file_path, 'r'))) {
$output_file = fopen($file_output, 'w');
while (false !== ($data = fgetcsv($read_file))) {
$outputData = array($data[1], $data[6], $data[19], $data[20],
$data[21]);
fputcsv($output_file, $outputData);
}
}
fclose($read_file);
fclose($output_file);
}
希望您在这里提到了正确的数组顺序:
$outputData = array($data[1], $data[6], $data[19], $data[20],
$data[21]);
如果数据索引不会 found/defined 那么 fputcsv() 将在新的 csv 中添加额外的列。
从不同的列数来看,似乎需要先删除文件,然后再 运行 您的代码。您可能希望在执行开始时 unset
文件。
if (file_exists($file_output)) {
unset($file_output);
}
// continue with getting and populating CSV