php - PHP 警告:array_combine():两个参数应该有相同数量的元素 - CSV 没有正确解析?
问题描述
对于以下 CSV 文件 (3MB): 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://stackoverflow.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-Jan-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 文件,其中标题的数量与每行上的字段数量相匹配。更令人困惑的是,我之前曾对同一个文件进行过操作,并且从未遇到过标题和行数不相等的问题。我该如何解决?