fgetcsv():第一行作为键

时间:2013-03-27 13:20:51

标签: php multidimensional-array fgetcsv

我正在构建一个简单的商店系统,它从csv文件生成的数组中获取产品。

我的csv如下:

pid;name;color
11149;Miro;"schwarz;weiß;blau;rot;gelb"
11004;FritzHansen;"buche;nussbau;schwarz;weiß;blau;hellblau;rot;grün;gelb;retro"

我正在使用以下脚本

if (($handle = fopen('_products.csv', 'r')) === false) {
    die('Error opening file');
}

$headers = fgetcsv($handle, 256, ';');
$_products = array();

while ($row = fgetcsv($handle, 256, ';')) {
    $_products[] = array_combine($headers, $row);
}
fclose($handle);

产生这个数组:

Array
(
    [0] => Array
        (
            [pid] => 11149
            [name] => Miro
            [color] => schwarz;weiß;blau;rot;gelb
        )

    [1] => Array
        (
            [pid] => 14215
            [name] => 1800
            [color] => schwarz;anthrazit
        )

    [2] => Array
        (
            [pid] => 11004
            [name] => FritzHansen
            [color] => buche;nussbau;schwarz;weiß;blau;hellblau;rot;grün;gelb;retro
        )
)

我希望键0-x为相应“子”阵列的[pid]值。

我该怎么做? 谢谢!

2 个答案:

答案 0 :(得分:7)

试试这个

while ($row = fgetcsv($handle, 256, ';')) {
    $_products[$row[0]] = array_combine($headers, $row);
}

答案 1 :(得分:0)

这应该做你需要的:

$products = array();

foreach  ($_products as $product)
{
  $products[$product['pid']] = $product;
}

print_r($products);