2012-09-18 155 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