【问题标题】:How to get values of json arrays in php如何在php中获取json数组的值
【发布时间】:2019-06-06 05:16:29
【问题描述】:

我在{} 大括号中有一个 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;] 之类的代码而不是添加整个数组,则不会得到添加数组值时得到的实际结果。我错过了什么还是需要添加更多代码?

【问题讨论】:

  • 你期望输出什么?
  • 代替 $json ='[$response5;] 试试这个方法:$json = json_decode($response5, true);
  • 如果您想要循环中的所有字段 - 您可以将其减少到 $your_string.=implode(",",$v).PHP_EOL;
  • 是的,我也试过$json = json_decode($response5, true); echo $json;,但我没有收到任何输出。
  • 您的 $json 是该代码中的一个数组。你不能回显一个数组

标签: php jquery arrays json csv


【解决方案1】:

为了将各种 cmets 放在一起,当尝试将整个 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";

【讨论】:

  • 已尝试$json ="[$response5]";$data=json_decode($json,true);$your_string="";foreach($data as $key=>$v){ $your_string.=implode(",",$key).PHP_EOL;$your_string.=implode(",",$v).PHP_EOL;}echo $your_string."\r\n";,但它不起作用,需要添加任何其他内容。
  • 它不起作用更有帮助的东西将有助于纠正问题。
  • 我使用了编码`foreach($data as $key=>$v){$your_string.=implode(",",$v).PHP_EOL;$your_string.=implode(", ",$key).PHP_EOL;}$csvdata= trim($your_string, ",");echo $csvdata."\r\n";'但我得到的是一个换行符和没有标题的实际值
  • 是的,我交换并尝试过,但没有标题,只有值会显示,并且显示的值就像一个接一个的行间隙,即第 1 行中的第一个值和第 3 行中的下一个值...跨度>
  • 感谢@Nigel Ren,我得到了预期的输出,但是这次我得到的标题在所有值之后重复,即第一个标题及其各自的值和下一行再次标题及其各自的值等等......有没有什么方法可以让标题在顶部显示一次。
猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 2017-10-20
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 2020-10-28
相关资源
最近更新 更多