2016-07-24 50 views
0

我真的很努力地研究如何將csv文件中的某些數據列轉換爲數組。目前我可以將整個事物轉換爲一個陣列使用:PHP - 從csv文件中獲取某些列到數組中

$csv = array(); 

$lines = file('../data/StaffData.csv', FILE_IGNORE_NEW_LINES); 

foreach ($lines as $key => $value) 
{ 
    $csv[$key] = str_getcsv($value); 
} 

但有沒有辦法只從數組中獲得某些列?如第1列和第2列,還是第1至第4列?等等。

目標是做到這一點,所以我可以把某些數據放到FPDF表中。我也在努力:/

- 如果有人知道如何快速把FPDF好看的表讓我知道請。我試圖從網站使用BasicTable函數,但是我的表離開了頁面,看起來不太好。這是我第一次使用它,而且非常糟糕。

我知道這是2種問題。但是第一個(標題中)是最主要的一個。 謝謝

回答

1

str_getcsv()解析單個行,而您只需從行中提取數據。

$csv = array(); 

$lines = file('../data/StaffData.csv', FILE_IGNORE_NEW_LINES); 

foreach ($lines as $key => $value) 
{ 
    $row = str_getcsv($value); 
    $csv[$key] = array($row[0], $row[1], ..., $row[n]); 
} 

,您可以指定在array($row[0], $row[1], ..., $row[n]);

1

您可以在每一行上使用explode()來獲取數組中的列。然後當你寫信給$ csv時,只要選擇你想要的就可以跳過你不想要的。

for{ 
    $row = explode(",", $line); 
    $csv[$key]['wantedcol1'] = $row[0]; //first col 
    $csv[$key]['wantedcol2'] = $row[2]; //third col 
} 

這只是一個簡單的小例子,它在寫入$ csv時跳過文件的第二列。

+0

感謝您的答覆邁克爾想要的列數。對不起我的不高興,但我不知道你的意思完全是什麼?你有一個例子嗎?或者可以指點我一個例子? 謝謝 –

+0

挖掘explode()的文檔,...你會很好地使用它,它非常簡單。它要求一個分隔符和一個字符串。在你的情況下,把每行/每行,並使用逗號作爲分隔符。它會將該字符串轉換爲數組。使用print_r()來查看爆炸()正在輸出什麼。你可以從數組中選擇你想要的列。把你的手弄髒,你會沒事的。 – MichaelClark

+0

我以前用過多次爆炸,只是沒有這樣的情況。也許我有點困惑?我可以創建數組,我只想知道如何從該數組中選擇列。 對於它在我的表生成器中工作,它需要是那些特定的列,而不是別的。我知道我可以打印完整陣列中的某些列,這是你的意思嗎? 這是多維的,並使用索引的一切。我希望我有道理?我想我只是在思考你的建議算法時遇到麻煩?謝謝, –

相關問題