为什么 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