Почему 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.