2012-09-18 227 views
4

我有一个CSV文件,我需要导入到关联数组。数据看起来像这样:PHP CSV到关联数组

"General Mills Cereal",http://sidom.com/dyn_li/60.0.75.0/Retailers/Saws/120914_20bp4_img_8934.jpg,$2.25,"9-17.12 oz., select varieties","Valid Sep 14, 2012 - Sep 20, 2012",Saws,"Grocery" 

我湾该数据转换成一个阵列,其中我可以抓住这样的值:

$items[$row]['title']; 
$items[$row]['imgurl']; 
$items[$row]['itemprice']; 
$items[$row]['itemsize']; 
$items[$row]['expir']; 
$items[$row]['storename']; 
$items[$row]['storetype']; 

当上述对应的元件以我的CSV文件。我怎样才能将这个文件导入到这样的数组中?

+1

看看[fgetcsv](http://php.net/manual/en/function.fgetcsv.php) – clentfort

+0

使用fgetcsv,效果很好! –

回答

3

请参见下面的网址

CSV to Associative Array

尝试过通过线CSV文件行

运行,并插入到阵列,如:

$array = array(); 
$handle = @fopen("file.csv", "r"); 
if ($handle) { 
    while (($line = fgetcsv($handle, 4096)) !== false) { 

     $array[$line[0]][$line[1]][$line[2]] = $line[3]; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 
5

我会建议使用内置在功能fgetcsv
还有一个简单的使用示例。

+0

使用fgetcsv,效果很好! –

4

fgetcsv()会给你一个数字索引数组。

一旦您已经阅读所有的记录中说$rawData,其沿着线的结构:

$rawData = array(0 => array(0 => "General Mills Cereal", 
          1 => "http://sidom.com/dyn_li/60.0.75.0/Retailers/Saws/120914_20bp4_img_8934.jpg" 
          2 => "$2.25", 
          3 => "9-17.12 oz.", 
          4 => "select varieties", 
          5 => "Valid Sep 14, 2012 - Sep 20, 2012", 
          6 => "Saws", 
          7 => "Grocery"), 
       ...); 

对此$rawData数组转换成你想要的东西,你可以做这样的事情:

$fields = array('title', 'imgurl', 'itemprice', 'itemsize', 
       'expir', 'storename', 'storetype'); 

$data = array_map(function($cRow) uses ($fields) { 
      return array_combine($fields, $cRow); 
     }, $rawData); 
+1

只是一个小小的更正 - “使用”应该是“使用”。否则这为我工作。 – Arieleo