首页 > 解决方案 > 如何在php中获取json数组的值

问题描述

我在 {}大括号中有一个 json 数组,它是从$response5.

$json ='[
 {
        "Collectioncentre_Name": "Kattupakkam - Collection Centre 001",
        "Session_ID": "20/04/2019/AM/CC001",
        "Date": "2019-04-20T00:00:00",
        "MilkSession": "AM",
        "Farmer_ID": "VASAN/000000037",
        "Row_ID": 332713,
        "Milkman_Code": "310",
        "Farmer_Name": "VASANTHA",
        "Gender": "Female",
        "Received_Quantity": 1.3
    },
    {
        "Collectioncentre_Name": "Kattupakkam - Collection Centre 001",
        "Session_ID": "20/04/2019/AM/CC001",
        "Date": "2019-04-20T00:00:00",
        "MilkSession": "AM",
        "Farmer_ID": "CHIND/000000366",
        "Row_ID": 332714,
        "Milkman_Code": "449",
        "Farmer_Name": "CHINDIRA E",
        "Gender": "Female",
        "Received_Quantity": 3
    },
    {
        "Collectioncentre_Name": "Kattupakkam - Collection Centre 001",
        "Session_ID": "20/04/2019/AM/CC001",
        "Date": "2019-04-20T00:00:00",
        "MilkSession": "AM",
        "Farmer_ID": "PERUN/000000017",
        "Row_ID": 332715,
        "Milkman_Code": "492",
        "Farmer_Name": "V.Perundevi",
        "Gender": "Female",
        "Received_Quantity": 3
    }
]';

 $data=json_decode($json,true);
 $your_string="";

foreach($data as $key=>$v){ 
    $your_string.=$data[$key]['Collectioncentre_Name'].",".$data[$key] 
 ['Session_ID'].",".$data[$key]['Date'].",".$data[$key] 
['MilkSession'].",".$data[$key]['Farmer_ID'].",".$data[$key] 
['Row_ID'].",".$data[$key]['Milkman_Code'].",".$data[$key] 
['Farmer_Name'].",".$data[$key]['Gender'].",".$data[$key] 
['Received_Quantity']."\r\n";
}
$csvdata= trim($your_string, ",");
//$csvdata = $your_string;


echo $csvdata."\r\n";

实际上这些 json 数组是 $response5 的输出。而且,如果我将代码$json ='[$response5;]而不是添加整个数组,则不会得到添加数组值时得到的实际结果。我错过了什么还是需要添加更多代码?

标签: phpjqueryarraysjsoncsv

解决方案


将各种评论放在一起,当尝试将整个 JSON 与原始数据放在一起时,而不是......

$json ='[$response5;]

要使其成为您需要使用的有效 JSON 数组...

$json ="[$response5]";

然后输出每行数据加上标题(使用implode而不是冗长地将每个字段加在一起),您可以使用...

$data=json_decode($json,true);
$your_string=implode(",",array_keys($data[0])).PHP_EOL;

foreach($data as $key=>$v){ 
    $your_string.=implode(",",$v).PHP_EOL;
}

echo $your_string."\r\n";

推荐阅读