为什么fputcsv在csv

时间:2015-06-03 12:43:01

标签: php csv fputcsv

我正在尝试从我的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);

}

2 个答案:

答案 0 :(得分:0)

希望你在这里提到了正确的数组序列:

 $outputData = array($data[1], $data[6], $data[19], $data[20], 
                          $data[21]);

如果找不到/定义了数据索引,那么fputcsv()会在新的csv中添加额外的列。

答案 1 :(得分:0)

从不同的列数开始,在运行代码之前,似乎需要删除该文件。您可能希望在执行开始时unset该文件。

if (file_exists($file_output)) {
    unset($file_output);
}

// continue with getting and populating CSV