2011-05-03 75 views
3

我有一個csv的列標題:描述,股票,mfgid(和其他一些我不需要的標題)。把csv列放入數組

我需要從列標題股票和mfgid數組中獲取數據。

我正在使用fgetcsv(),但它將整行放入數組中的獨佔密鑰中。

發現這個在這裏計算器,但不能讓它的工作權利:

$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 2011-05-03 14:13:54

回答

2

對於一個完整的CSV文件中使用此結構閱讀:

$csv = array_map("str_getcsv", file("inventory.csv")); 
$header = array_shift($csv); 

這將$header分成與$csv數據的其餘部分分開排列。

如果再(?貌似)需要一個Map兩個字段,請嘗試:

$col1 = array_search("stock" $headers); 
$col2 = array_search("mfgid", $headers); 
foreach ($csv as $row) { 
    $map[ $row[$col1] ] = $row[$col2]; } 

這會給你一個stock - >mfgid陣列。

+0

看起來不錯我會給它一個鏡頭並報告回來。謝謝 – Joe 2011-05-03 15:27:20

+0

那麼它可能適用於其他人,但我的服務器不使用PHP 5.3,所以我認爲這限制了我無法使用「str_getcsv」 – Joe 2011-05-03 15:58:12

+0

啊好吧。您可以嘗試http://www.php.net/manual/en/function.str-getcsv.php#98088上的某個仿真,或使用http://upgradephp.berlios.de/獲取此PHP5.3函數。但是,您可以使用舊的循環方法,並應用第二個代碼塊來分隔列 – mario 2011-05-03 16:01:12