Почему fputcsv создает дополнительный пустой столбец в 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);

}

2 ответа

Решение

Судя по разным подсчетам столбцов, файл необходимо удалить перед запуском кода. Вы можете захотеть unset файл в начале исполнения.

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

// continue with getting and populating CSV

Надеюсь, вы упомянули правильную последовательность массива здесь:

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

Если индекс данных не будет найден / определен, то fputcsv() добавит дополнительный столбец в новый CSV.

Другие вопросы по тегам