我有一个像这样的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"
}
}
}
答案 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]];