2014-01-06 87 views
1

我有以下內容的CSV文件:如何使用PHP將CSV解析爲多維數組?

Date,Transaction details,Debit,Credit 
January 03 2014,POS transaction,"36,80", 
,Card No: xxxx xxxx xxxx xxxx,, 
,Terminal: AUCHAN ROMANIA SA RO CLUJ NAPOCA,, 
,Date: 02-01-2014 AuthID: 382542,, 
January 03 2014,POS transaction,"116,69", 
,Card No: xxxx xxxx xxxx xxxx,, 
,Terminal: AUCHAN ROMANIA SA RO CLUJ NAPOCA,, 
,Date: 02-01-2014 AuthID: 374829,, 
December 31 2013,Fees and taxes,"1,00", 
,Monthly SMS alerts service fee: 1,, 

我試圖創建一個這樣的數組:

Array 
(
    [0] => Array 
     (
      [Date] => January 03 2014 
      [Transaction details] => POS transaction 
      [Debit] => 36,80 
      [Credit] => 
      [Card No.] => Card No: xxxx xxxx xxxx 2113 
      [Notes] => Terminal: AUCHAN ROMANIA SA RO CLUJ NAPOCA 
      [Date and AuthID] => Date: 02-01-2014 AuthID: 382542 
     ) 

    [1] => Array 
     (
      [Date] => January 03 2014 
      [Transaction details] => POS Transaction 
      [Debit] => 116,69 
      [Credit] => 
      [Card No.] => Card No: xxxx xxxx xxxx 2113 
      [Notes] => Terminal: AUCHAN ROMANIA SA RO CLUJ NAPOCA 
      [Date and AuthID] => Date: 02-01-2014 AuthID: 374829 
     ) 

    [2] => Array 
     (
      [Date] => January 03 2014 
      [Transaction details] => Fees and taxes 
      [Debit] => 1,00 
      [Credit] => 
      [Card No.] => 
      [Notes] => Monthly SMS alerts service fee 
      [Date and AuthID] => 
     ) 
) 

我格外感興趣保持場,因爲我稍後將使用該字段對交易進行分類。

我很感激任何幫助。

編輯:我想出了自己也如何解析CSV到數組中,但我無法弄清楚如何合併一個或多個數組到數組中。也許我的問題沒有被描述得很清楚。

Curently這是正在返回的數組:這使得數據到CSV文件,使用foreach循環通過多維數組

array(258) { 
    [0]=> 
    array(4) { 
    ["Data"]=> 
    string(16) "January 03 2014" 
    ["Detalii tranzactie"]=> 
    string(13) "POS transaction" 
    ["Debit"]=> 
    string(5) "36,80" 
    ["Credit"]=> 
    string(0) "" 
    } 
    [1]=> 
    array(4) { 
    ["Data"]=> 
    string(0) "" 
    ["Detalii tranzactie"]=> 
    string(29) "Nr. card: xxxx xxxx xxxx 2113" 
    ["Debit"]=> 
    string(0) "" 
    ["Credit"]=> 
    string(0) "" 
    } 
    [2]=> 
    array(4) { 
    ["Data"]=> 
    string(0) "" 
    ["Detalii tranzactie"]=> 
    string(44) "Terminal: AUCHAN ROMANIA SA RO CLUJ NAPOCA" 
    ["Debit"]=> 
    string(0) "" 
    ["Credit"]=> 
    string(0) "" 
    } 
} 
+1

http://www.php.net/manual/en/function.str-getcsv.php。看評論。 –

回答

0
$rows = array_map('str_getcsv', file('myfile.csv')); 
$header = array_shift($rows); 
$csv = array(); 
foreach ($rows as $row) { 
    $csv[] = array_combine($header, $row); 
} 
1

在你的PHP文件。你的數組被稱爲$csv_array。然後循環通過此數組,如下所示:

foreach($csv_array as $csv_data1) 
{ 
    foreach($csv_data1 as $data) 
    { 
    echo "\"".$data."\"".","; 
    } 
echo "\n"; 
} 

這將正確呈現多維數組的數據。

這是檢索csv文件中數據的基本思路,您可以根據尺寸測試數組。

+0

正如我在編輯中提到的:我也能夠自己弄清楚這一點,但我無法弄清楚如何將特定行合併到數組字段中。 –