我在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