为什么我的csv数组读取功能不起作用?

时间:2015-08-15 18:24:12

标签: php csv

我在Stackoverflow上的另一篇文章中得到了这个很棒的功能,它可以很好地将csv文件读入数组。但突然间它停止工作,可能是因为csv格式改变了。我如何让它再次运作?

它' S:

function csvToArray($file) {
    $rows = array();
    $headers = array();
    if (file_exists($file) && is_readable($file)) {
        $handle = fopen($file, 'r');
        while (!feof($handle)) {
            $row = fgetcsv($handle, 10240, ',', '"');
            if (empty($headers))
                $headers = $row;
            else if (is_array($row)) {
                array_splice($row, count($headers));
                $rows[] = array_combine($headers, $row);
            }
        }
        fclose($handle);
    } else {
        throw new Exception($file . ' doesn`t exist or is not readable.');
    }
    return $rows;
}

$csv = csvToArray("import.csv");
echo '<pre>';
echo print_r($csv);
echo '</pre>';

新的CSV格式如下:

TITLE,DESCRIPTION,PRICE,CURRENCY_CODE,QUANTITY,TAGS,MATERIALS,IMAGE1,IMAGE2,IMAGE3,IMAGE4,IMAGE5,"VARIATION 1 TYPE","VARIATION 1 NAME","VARIATION 1 VALUES","VARIATION 2 TYPE","VARIATION 2 NAME","VARIATION 2 VALUES"
"Title","Description",10,USD,1,"Category", etc...

有些是引号,有些不是,但所有都是昏迷分开。如果"Description"中的字词也包含引号,则会引用"This is the ""greatest"" description ever"作为双引号。

我需要更改什么才能重新开始工作?这对于任何提示都非常重要!

更新:我得到的错误是:

PHP Warning: array_combine(): Both parameters should have an equal number of elements

0 个答案:

没有答案