Предупреждение PHP: array_combine(): оба параметра должны иметь равное количество элементов - CSV не анализируется должным образом?

Для следующего файла CSV (3МБ): ACDF_cut.csv

И для следующего кода:

<?php

$file = fopen("ACDF_cut.csv","r");
$file2 = fopen("ACDF_cut_rounded.csv","w");


    /* Map Rows and Loop Through Them */
    $rows   = array_map('str_getcsv', file('ACDF_cut.csv'));
    $header = array_shift($rows);
    $csv    = array();
    foreach($rows as $row) {
        $csv[] = array_combine($header, $row);
    }



foreach ($csv as &$product){//Use of & as per https://stackru.com/a/40913938/9095603
    $product['LQ Price'] = number_format($product['LQ Price'],2); 
    $product['AvailableQty'] = number_format($product['AvailableQty']); 
    $product['Net Weight'] = number_format($product['Net Weight'],2); 
}


foreach ($csv as $product) {
  fputcsv($file2, $product);
}


 fclose($file);
 fclose($file2);

я получил

[03-янв-2020 17:00:16 UTC] Предупреждение PHP: array_combine(): оба параметра должны иметь равное количество элементов в /home/kalugi/public_html/wp-content/uploads/wpallimport/files/round_ACDF_cut.php в строке 20

Я не понимаю, как это возможно $header а также $row не имеют равного количества элементов.

Но действительно, проверив, я вижу следующее:

echo count($header) = 13
echo count($rows) = 8552

Тем не менее, они происходят из одного и того же необработанного CSV-файла, в котором количество заголовков совпадает с количеством полей в каждой строке. Что еще больше сбивает с толку, я работал с этим же файлом раньше, и у меня никогда не было проблем с неравным количеством заголовков и строк. Как это исправить?

0 ответов

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