2015-06-03 5 views
1

Я пытаюсь удалить ненужный столбец из моего csv. То, что я делаю, читается с текущего csv и использует fputcsv для создания нового. Однако данные испорчены, потому что fputcsv добавляет дополнительный пустой столбец непосредственно перед $data[21]. Ниже мой кодПочему fputcsv производит дополнительную пустую колонку в csv

$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); 

} 
+0

Есть ли все ссылочные позиции массива? var_dump их, чтобы сделать 100% уверенным –

+0

да, я сделал ... позиция массива перед записью в csv верна. Я вручную var_dump его и проверил. Спасибо. – user1139747

+0

Можете ли вы опубликовать пример данных CSV, которые выводятся? –

ответ

0

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

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

// continue with getting and populating CSV 
0

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

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

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

+0

Привет, что я сделал, это переменная var_dump $ data, поэтому я мог видеть указание в массиве и выбрать нужную позицию в массиве для записи. Таким образом, один из столбцов, которые я выбрал выше, не определен. Это очень странно – user1139747

+0

Сделайте так: while (false! == ($ data = fgetcsv ($ read_file))) { $ outputData [0] = $ data [1]; $ outputData [1] = $ data [6]; $ outputData [2] = $ data [19]; $ outputData [3] = $ data [20]; $ outputData [4] = $ data [21]; } fputcsv ($ output_file, $ outputData); – sAcH

+0

Несомненно .. тогда позвольте мне попробовать, что – user1139747

Смежные вопросы