将CSV列放入数组中

3

我有一个带有列标题的csv文件:描述,库存,制造商id(还有其他一些我不需要的标题)。

我需要从库存和制造商id列中获取数据并将其存储在数组中。

我曾经使用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
什么是确切的问题?显示了什么?有什么不起作用的地方? - mauris
1个回答

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

可能对别人有效,但我的服务器没有使用PHP 5.3,所以我认为这限制了我不能使用“str_getcsv”。 - Joe
好的。您可以尝试在http://www.php.net/manual/en/function.str-getcsv.php#98088上使用其中一个仿真,或者使用http://upgradephp.berlios.de/获取PHP5.3函数。但是您也可以使用旧的循环方法,并应用第二个代码块来分隔列。 - mario

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接