Skip to content
Advertisement

Pull nested JSON data using foreach loop in php

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:

enter image description here

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement