PHP Пропустить первую строку CSV, если она содержит конкретную информацию заголовка

1

Мне нужно проверить первую строку файла csv, чтобы увидеть, содержит ли он заголовки для столбцов (число, имя, количество). Если первая строка содержит эти заголовки, выйдите из файла или добавьте номер, имя, количество, если первая строка не содержит эту информацию.

Я пытался проверить, содержит ли первый столбец первую строку число, которое не означает заголовков.

Вот код, который я использовал. И еще раз спасибо за вашу помощь.

$rows = $phones = [];
if (($handle = fopen($file_tmp, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    list($phone, $name, $amount) = $data;
    if(!($data = fgetcsv($handle))) {
return;    //most likely empty file
}
    if(!is_numeric($data[0])) {
        fputcsv($handle, array('number', 'name', 'amount'));
    }

    $phone = str_replace(['(',')','-'], '', $phone);
    $amount = str_replace(['$'], "", $amount);
    $amount = sprintf('$%.2f', $amount);


     // track unique phone numbers here
    if (isset($phones[$phone])) {
        // it a duplicate so just ignore the entire row
        continue;
    }
    // otherwise it a new phone number so store it
    $phones[$phone] = true;
    $rows[] = [$phone, $name, $amount];
    // or output directly
    //echo "$phone | $name | $amount";
    }
    fclose($handle);
}    
Теги:
csv

1 ответ

0

У вас есть два варианта выбора между:

  1. Исправлено правило в вашем загрузчике/экспортере использовать ИЛИ НЕ использовать заголовок для экспорта CSV.
  2. Исправлен порядок столбцов; знающий формат для поля amount, вы можете проверить, действительно ли значение для любой строки

Чтобы разобрать "$ 100,00" на номер в PHP:

NumberFormatter :: parseCurrency

  • 0
    Файл CSV должен иметь строку заголовка для того, чтобы я работал. Я предполагаю, что самый простой способ будет сделать то, что я сначала пробовал, то есть проверить, есть ли в первой строке число, что означает отсутствие заголовка, а затем либо пропустить, либо добавить в зависимости от того, что найдено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню