首页 > 解决方案 > 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 文件,其中标题的数量与每行上的字段数量相匹配。更令人困惑的是,我之前曾对同一个文件进行过操作,并且从未遇到过标题和行数不相等的问题。我该如何解决?

标签: phpcsvarray-combine

解决方案


推荐阅读