2013-03-13 122 views
0

我想讀取一個csv文件,然後將第一列和第二十一列存儲在關聯數組中,以便第一列變爲關鍵字,第二十一列變爲值。從csv文件創建關聯數組php

後來我想拉基於「鑰匙」的記錄。包含代碼的PHP文件upload.php的

$calls = array(); 
$file_handle = fopen($C1.".File.csv","r"); // $C1 is defined before. 
//Just appending something to the file name. This file exists. 
while (!feof($file_handle)) { 
    $line= fgetcsv($file_handle, 1024); 
    $calls[$line[0]] = $line[20]; //Line 94 of this file 

} 
fclose($file_handle); 
print_r($calls); 

我得到這個錯誤

Undefined offset: 20 in upload.php on line 94 

我要去哪裏錯了。

+0

第94行的upload.php是什麼?因爲你在這裏的任何地方都不使用偏移量24,所以你的問題必須在別的地方。 – Havenard 2013-03-13 22:07:45

+0

更新了我的答案 – Ank 2013-03-13 22:08:28

+0

您在該行中缺少逗號。或者可能整條線路都是空白的。後續代碼var_dump($線); – mkaatman 2013-03-13 22:10:07

回答

1

在零索引數組二十「列」將$line[19]

更新按照您的評論(以及隨後的編輯):

該錯誤是在循環$line[20]期間在某一點明確指出未設置 - 如果每行都有適當的列數,那麼我唯一能想到的另一個原因是CSV文件末尾有空行。

例如,

1. foo, bar, baz 
2. a , b , c 
3.     <-- empty line as a result of carriage return 

所以......你要檢查trim($line)!=''fgetcsv之前和/或良好的錯誤處理檢查的一部分,該數組的長度是比你想讀的最高指數越大。

+0

Thanks.but我不認爲那是錯誤。我試圖閱讀的csv大約有50列。 – Ank 2013-03-13 22:13:16

+0

@Ankur更新回答 – Emissary 2013-03-13 22:23:01

+0

我看不到任何空行或空白,但修剪($行)!=''修復它.. – Ank 2013-03-14 02:28:05