2015-04-07 2 views
7

У меня есть CSV-файл со следующей структурой:PHP Обработка CSV файл разделенных точкой с запятой

a; b; c,c c; d 

При попытке обработать его, он говорит, что смещение 2 и 3 не определены. Потребовал мне некоторое время, чтобы понять, что это вызвано , и понятия не имеет, как это решить. Если я удалю ,, все будет хорошо.

Вот моя функция обработки:

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $csvdata = fgetcsv($file); 

     $data[] = explode(';', $csvdata[0]); 
    } 

    fclose($file); 
    return $data; 
} 

Пробовал fgetcsv($file); в fgetcsv($file, '"');, но не помогло.

+5

Сепаратор является третий аргумент [ 'fgetcsv'] (http://php.net/fgetcsv). – mario

+0

Спасибо за выделение! –

ответ

7

Ваша проблема в том, что fgetcsv использует , как разделитель по умолчанию. Вы должны изменить его на ;. Тогда вам не нужно будет explode больше :)

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $data[] = fgetcsv($file,null,';'); 
    } 

    fclose($file); 
    return $data; 
} 
+0

Вау, стыдись меня! Я сделал все неправильно. Это должно быть причиной, по которой я не мог найти тему, связанную с моей проблемой :) Большое спасибо, теперь все работает так, как должно быть! –

+3

@Marc, я бы предложил сохранить декларацию $ data. во-первых, вы уверены, что он инициализирован правильно, во-вторых, если в файле нет строки, объявление никогда не произойдет, а возвращаемое значение равно null. –

+0

Это правда, хотя – Marc

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