【问题标题】:fgetcsv(): first row as keyfgetcsv():第一行作为键
【发布时间】:2013-03-27 13:20:50
【问题描述】:

我正在构建一个简单的商店系统,它从 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] 的值。

我该怎么做? 谢谢!

【问题讨论】:

    标签: php multidimensional-array fgetcsv


    【解决方案1】:

    试试这个

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

    【讨论】:

      【解决方案2】:

      这应该可以满足您的需要:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 2021-02-03
        • 2016-09-01
        相关资源
        最近更新 更多