duanlang1196 2012-06-05 14:46
浏览 91
已采纳

将CSV结构化为对象/数组

I am using this code to import a basic CSV in which each row represents an invoice. I would like these invoices grouped by one of the columns and ultimately do a json_encode to produce a json with a parent/child hierarchy. How do I go about doing this?

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 (goal)

 [ {
 "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"
   } ],
} ]
  • 写回答

1条回答 默认 最新

  • douqiaolong0528 2012-06-05 15:09
    关注

    For each $row,

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

    Not exactly the same format but indexed, and good for for x in y loops in your js.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?