从CSV文件中读取行并导出到JSON

时间:2012-11-07 03:53:05

标签: php json csv

我想将CSV文件导出到JSON文件,要求在推荐字段读取值并写入JSON文件。 Exapmle:在第1行中,recomnend = 2将读取id = 2的行并打印到值为:id,product_id,title的JSON文件。

$json = array();

        $json['id'] = $row['id'];
        $json['product_id'] = $row['product_id'];
        $json['title'] = $row['title'];
        $json['outline'] = $row['outline'];
        $recom[] = $json;  
print json_encode($recom);

http://ns0.upanh.com/b6.s33.d3/3a3ebb93a87c5703f673b399d5613ec2_50639320.untitled.png

1 个答案:

答案 0 :(得分:1)

我不知道采用不同的方式,但以下方法可行。使用此方法意味着您必须使用列索引,而不是它的名称。如果您知道所需值的列索引,这应该不是问题,但我只是想提一下:

$fp = fopen('test.csv','r') or die("**! can't open file\n\n");
while($csv_line = fgetcsv($fp,1024)) {
    $id = $csv_line[0];
    $product_id = $csv_line[1];
    $title = $csv_line[2];
    $outline = $csv_line[3];        
}
fclose($fp) or die("**! can't close file\n\n");

现在,因为您将有多行,我建议您将它们保存到一个JSON对象中:

$fp = fopen('test.csv','r') or die("**! can't open file\n\n");
$i = 0;
while($csv_line = fgetcsv($fp,1024)) {
    $i++;
    $json['json_'.$i]['id'] = $csv_line[0];
    $json['json_'.$i]['product_id'] = $csv_line[1];
    $json['json_'.$i]['title'] = $csv_line[2];
    $json['json_'.$i]['outline'] = $csv_line[3];        
}
$json['total_lines'] = $i;
print json_encode($json);
fclose($fp) or die("**! can't close file\n\n");

使用此方法,您可以将每一行保存为子JSON对象,从而可以提取总数并解析对象以提取行。