2014-01-06 47 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

正如我在编辑中提到的:我也能够自己弄清楚这一点,但我无法弄清楚如何将特定行合并到数组字段中。 –