PHP警告:array_combine():两个参数的元素数应该相等-CSV解析不正确?
对于以下CSV文件(3MB): 对于以下代码:PHP警告:array_combine():两个参数的元素数应该相等-CSV解析不正确?,php,csv,array-combine,Php,Csv,Array Combine,对于以下CSV文件(3MB): 对于以下代码: <?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)
<?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);
然而,它们来自同一个非参差不齐的CSV文件,其中头的数量与每行上的字段数量相匹配。为了让事情变得更混乱,我以前操作过这个文件,从来没有遇到过头和行计数不相等的问题。如何修复此问题?我怀疑问题在于
file()
无法识别文件中的换行符,因此它将所有内容放在一行中。什么是count($rows)
?您的csv第8446行的Description1字段中有一个新行,它将中断您的导入。我猜这可能不是唯一的一个。但是,当你可以在$file
上使用fgetcsv时,为什么你要使用file函数和stru getcsv呢?@Barmar$rows
count=8552($header
count=13)count($rows)
不相关,重要的是count($row)
在每一行。我怀疑问题在于file()
无法识别文件中的换行符,因此它将所有内容放在一行中。什么是count($rows)
?您的csv第8446行的Description1字段中有一个新行,它将中断您的导入。我猜这可能不是唯一的一个。但是,当你可以在$file
上使用fgetcsv时,为什么你要使用file函数和stru getcsv呢?@Barmar$rows
count=8552($header
count=13)count($rows)
是不相关的,重要的是每行上的count($row)
。
echo count($header) = 13
echo count($rows) = 8552