在php中使用foreach循环提取嵌套的JSON数据
我想使用PHP(foreach循环)从下面的JSON格式中提取数据 用户详细信息对应房屋详细信息,房屋详细信息对应单个电表读数 我想显示用户名、设备号和所有仪表详细信息字段。请帮帮我在php中使用foreach循环提取嵌套的JSON数据,php,api,loops,Php,Api,Loops,我想使用PHP(foreach循环)从下面的JSON格式中提取数据 用户详细信息对应房屋详细信息,房屋详细信息对应单个电表读数 我想显示用户名、设备号和所有仪表详细信息字段。请帮帮我 { "id": 7, "Username": "user", "Housename": "Leela", "Houses_list": [{ "id": 1, "Device_No": 1111, "meter_
{
"id": 7,
"Username": "user",
"Housename": "Leela",
"Houses_list": [{
"id": 1,
"Device_No": 1111,
"meter_detail": [{
"id": 1,
"flow": 12,
"date": "2020-02-13T12:05:14.709Z",
"opening": 5,
"volume": 1234
},
{
"id": 2,
"flow": 32,
"date": "2020-02-13T12:05:26.821Z",
"opening": 2,
"volume": 1235
}
]
},
{
"id": 2,
"Device_No": 231,
"meter_detail": [{
"id": 3,
"flow": 78,
"date": "2020-02-13T12:05:41.331Z",
"opening": 5,
"volume": 7854
}]
}
]
}
欢迎来到堆栈溢出
您可以使用将json转换为数组的函数。然后,您只需使用foreach循环迭代该数组。您需要使用
JSON\u decode()
将JSON转换为数组。然后,使用两个foreach
循环即可:
<?php
$json = '{
"id": 7,
"Username": "user",
"Housename": "Leela",
"Houses_list": [{
"id": 1,
"Device_No": 1111,
"meter_detail": [{
"id": 1,
"flow": 12,
"date": "2020-02-13T12:05:14.709Z",
"opening": 5,
"volume": 1234
},
{
"id": 2,
"flow": 32,
"date": "2020-02-13T12:05:26.821Z",
"opening": 2,
"volume": 1235
}
]
},
{
"id": 2,
"Device_No": 231,
"meter_detail": [{
"id": 3,
"flow": 78,
"date": "2020-02-13T12:05:41.331Z",
"opening": 5,
"volume": 7854
}]
}
]
}';
$input = json_decode($json, true);
echo 'Username: '.$input['Username'].'<br>';
foreach ($input['Houses_list'] as $device){
echo '<br>Device No: '.$device['Device_No'].'<br>';
foreach ($device['meter_detail'] as $metrics){
echo '<table style="border: 1px solid black">';
foreach ($metrics as $key => $metric){
echo '<tr><td>'.$key.'</td><td>'.$metric.'</td></tr>';
}
echo '</table>';
}
}
?>
输出:
可能至少会帮助您从json中获得一个数组。但是,它将是一个多维数组,单个
foreach
将不足以对其进行迭代。请使用注释或提供更完整的答案,以供将来参考。这看起来像是一个评论,并没有完全回答这个问题。单一的json_解码
不足以解决OP问题。我同意我可以使用注释,但单一的json_解码
就足够了。其余的只是处理数组,OP没有说明它们是否有问题。该死,我写得太慢了,得到的代码基本相同,但是我额外添加了一个hack,如果有多个用户,但是我的hack意味着OP的json可能看起来不一样。而且我有点偏执,把is_array
放在我能放的任何地方