我有一个带有列标题的csv:description,stock,mfgid(以及其他一些我不需要的标题)。
我需要从列标题stock和mfgid中获取数据。
我使用的是fgetcsv(),但它将整行放入数组中的独占键。
在stackoverflow找到了这个,但无法使其正常工作:
$file = fopen('inventory.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
print_r($line);
}
fclose($file);
答案 0 :(得分:2)
要阅读完整的CSV文件,请使用以下结构:
$csv = array_map("str_getcsv", file("inventory.csv"));
$header = array_shift($csv);
这会将$header
分隔为与$csv
数据的其余部分分开的数组。
如果您(看似?)想要两个字段的地图,请尝试:
$col1 = array_search("stock" $headers);
$col2 = array_search("mfgid", $headers);
foreach ($csv as $row) {
$map[ $row[$col1] ] = $row[$col2]; }
这会给你一个stock
- > mfgid
数组。