我遇到了问题,需要你的帮助! 我想将CSV转换为JSON,以及CSV中的1行,导出1文件JSON(JSON的内容是CSV行的内容,JSON的名称是此行的id)。 我尝试做,但它只显示和下载JSON。 请给我一个关于这个问题的建议。 谢谢你的帮助!
<?php header('Content-type: application/json'); $feed = 'jsondata_palpad.csv'; $keys = array(); $newArray = array(); function csvToArray($file, $delimiter) { if (($handle = fopen($file, 'r')) !== FALSE) { $i = 0; while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { for ($j = 0; $j < count($lineArray); $j++) { $arr[$i][$j] = $lineArray[$j]; } $i++; } fclose($handle); } return $arr; } $data = csvToArray($feed, ','); $count = count($data) - 1; $labels = array_shift($data); foreach ($labels as $label) { $keys[] = $label; } $keys[] = 'id'; for ($i = 0; $i < $count; $i++) { $data[$i][] = $i; } for ($j = 0; $j < $count; $j++) { $d = array_combine($keys, $data[$j]); $newArray[$j] = $d; } header("Content-type: application/json"); header("Content-Disposition: attachment; filename=test.json"); header("Expires: 0"); header("Pragma: no-cache"); echo json_encode($newArray); ?>
答案 0 :(得分:0)
所以你有一个标题的CSV文件。
要阅读它,首先将行转换为数组:
$csv = array_map("str_getcsv", file($filename));
$head = array_shift($csv);
转换为关联数组:
$csv = array_map("array_combine", array_fill(0, count($csv), $head), $csv);
生成文件:
foreach ($csv as $index => $row) {
file_put_contents("$index.json", json_encode($row));
}
此处循环计数器$index
用于生成文件名。
有关说明,请参阅手册:
如果您确实想要其他内容,请在下次写一个更精确的问题。