如何从api之类的php中的数组创建json

时间:2018-12-20 16:47:23

标签: php arrays json

我有一个像这样的CSV文件的2018年学生准证记录示例...

1 | Jonathan | 4CS-10 | 1,2,3,4 | Pass with credit
2 | Peter Jo | 4CS-11 | 1,2,3,4 | Pass with credit

,我想将其转换为Json。所以首先我认为我需要将其更改为php数组,然后必须使用json_encode函数。

我已使用fgetcsv()将CSV数据提取到数组中。 我要实现的最终json结果如下:

{"2018" : { 
  "4CS-10" : {
      "name" : "Jonathan",
      "destinations": "1,2,3,4"
    },
  "4CS-11" : {
      "name" : "Peter Joe",
      "destinations": "1,2,3,4"
    }
 }
}

1 个答案:

答案 0 :(得分:0)

要生成该结构,您需要迭代CSV数组并将行转换为关联数组,然后使用第二列作为键将每一行添加到输出数组中。

foreach ($your_array as $row) {
    //      ↓ use 4CS-10, etc. as keys
    $data[$row[2]] = ['name' => $row[1], 'destinations' => $row[3]];
    //       convert numeric keys ↑ to string keys ↑   
}
echo json_encode(['2018' => $data]);

如果您用作键的列(诸如4CS-10等值)不是唯一的,您可能会遇到麻烦。如果重复任何值,则只会覆盖CSV的最后一行,因为您将覆盖该键的原始值。在这种情况下,如果要获取所有数据,则需要稍微更改结构,并使4CS-10下的值成为对象数组而不是单个对象。

$data[$row[2]][] = ['name' => $row[1], 'destinations' => $row[3]];