我正在尝试使用php解析csv文件,
$csv = array_map("str_getcsv", file("upload/" .
$newfilename,FILE_SKIP_EMPTY_LINES));
$keys = array_shift($csv);
foreach ($csv as $i=>$row) {
$csv[$i] = array_combine($keys, $row);
}
foreach ($csv as $row) {
echo $row["Due"];
}
var_dump($csv);
但是当我查看数组的转储时,Due数组键有双引号
array(20) { [0]=> array(10) { [""Due""]=> string(8) "30/06/17"
csv文件的引号中没有'Due',我不确定额外引号的来源,其余所有键都是正常的
我尝试过以下尝试让它发挥作用
echo $csv['Due'];
echo $csv['"Due"'];
echo $csv["\"Due\""];
echo $csv["Due"];
但没有工作
键的转储看起来像
array(10) { [0]=> string(8) ""Due"" [1]=> string(5) "Round" [2]=> string(4) "Jobs" [3]=> string(3) "New" [4]=> string(7) "Overdue" [5]=> string(8) "Due Jobs" [6]=> string(9) "Worksheet" [7]=> string(9) "Avg Price" [8]=> string(6) "Weekly" [9]=> string(7) "Monthly" }
并且CSV文件的顶行看起来像
"Due","Round","Jobs","New","Overdue","Due Jobs","Worksheet","Avg Price","Weekly","Monthly"
答案 0 :(得分:1)
我通过打开CSV文件并重新使用引号“
来解决了这个问题我检查了我删除的引号的ASCII值并替换了它们,它们完全相同。
我通过执行字符串替换删除任何引号“
来解决php中的问题$keys[0] = str_replace('"', "", $keys[0]);
我仍然不确定导致这种情况的原因,因为当我转储$ keys变量时它没有显示引号。