我有一个简单的脚本,如下所示:
$row_to_show = 2;
$handle = fopen('myfile.csv', 'r');
if ($handle !== false) {
$row_count = 0;
while($csv_line = fgetcsv($handle)) {
$row_count++;
if ($row_count == $row_to_show) {
$latestResults = ($csv_line);
echo json_encode($latestResults);
}
}
}
它抓取CSV文件中的第二行。然后它将它编码为json,并显示如下:
[ “20-APR-2013”, “46”, “8”, “34”, “38”, “44”, “42”, “14”, “4”, “MERLIN”]
但是,我想要做的是:
"Date":20-Apr-2013,"ball1":46,"ball2":8,"ball3":34,"ball4":38,"ball5":44"ball6":42,"bonusball":14,"set":4,"machine":MERLIN
我如何实现这一目标?提前致谢
答案 0 :(得分:0)
从它的外观来看,JSON输出将是我对CSV的期望,因为CSV只是一个值数组。
如果要添加“列标题”信息,则需要创建关联数组。
有时,CSV的第一行包含标题信息,如果是这种情况,您可以将其保存以供日后使用:
/...
$headers = null;
while($csv_line = fgetcsv($handle)) {
$row_count++;
// The first row contains the headers, save it
if($row_count == 1) {
$headers = $csv_line;
}
//..
如果没有,您需要手动创建它......
$headers = array('Date', 'ball1', 'ball2',...);
然后,您可以将它们合并为一个关联数组(请参阅SO问题:"PHP - Merge two arrays (same-length) into one associative?")
if ($row_count == $row_to_show) {
$latestResults = ($csv_line);
$output = array_combine($headers, $latestResults);
echo json_encode($output);
}
我希望有所帮助!
修改的
感谢Marios评论(我在写这篇文章之后看到),看来SO问题"CSV to Json with header row as key"几乎涵盖了同样的事情。