0

このコードを使用して、各行が請求書を表す基本的なCSVをインポートしています。これらの請求書を列の1つでグループ化し、最終的にjson_encodeを実行して、親/子階層を持つjsonを生成したいと思います。どうすればこれを行うことができますか?

CSV

 ID      CardCode    sum            amount     
 165     BENV5271    100            100 
 026     BENV5635    509.85         287.33
 9025    BENV5635    509.85         222.52  

PHP

if (($handle = fopen('upload/BEN-new.csv', "r")) === FALSE) {
    die('Error opening file'); 
}
 $headers = fgetcsv($handle, 1024, ',');
 $cardCodes = array();

 while ($row = fgetcsv($handle, 1024, ",")) {
    $cardCodes[] = array_combine($headers, $row);
}
fclose($handle);

JSON(目標)

 [ {
 "CardCode":"BENV5271", 
 "payment_sum": "100.00"
 "details": [ {
    "DocNum": "165",
    "InvPayAmnt": "100.00",
    "PmntDate": "2012-03-29"
  } ],

}, {
 "CardCode": "BENV5635",
 "payment_sum": "509.85"
 "details": [ {
     "DocNum": "026"  
     "InvPayAmnt": "287.33",
     "PmntDate": "2012-03-29"
   }, {
     "DocNum": "025",
     "InvPayAmnt": "222.52",
     "PmntDate": "2012-03-29"
   } ],
} ]
4

1 に答える 1

0

それぞれについて$row

@$cardCodes[$row[1]]['payment_sum'] += $row[3];
@$cardCodes[$row[1]]['details'][] = array(
    'DocNum' => $row[0],
    'InvPayAmnt' => $row[3],
    'PmntDate' => $row[4?],
);

for x in yまったく同じ形式ではありませんが、インデックスが付けられており、jsのループに適しています。

于 2012-06-05T15:09:41.207 に答える