Предупреждение 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-файла, в котором количество заголовков совпадает с количеством полей в каждой строке. Что еще больше сбивает с толку, я работал с этим же файлом раньше, и у меня никогда не было проблем с неравным количеством заголовков и строк. Как это исправить?