将csv列放入数组中

时间:2011-05-03 14:08:58

标签: php csv

我有一个带有列标题的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);

1 个答案:

答案 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数组。