I want to pull data from below JSON format using PHP (foreach loop).
User detail is correspondence to house detail and house detail correspondence to individual meter reading.
I want to show Username, Device_No and all meter_detail field. Please help me out.
{ "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 }] } ] }
Advertisement
Answer
You need to convert the JSON to an array by using json_decode()
. Then a couple of foreach
loops would do work for you:
<?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>'; } } ?>
Output: