Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用foreach循环提取嵌套的JSON数据_Php_Api_Loops - Fatal编程技术网

在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_

我想使用PHP(foreach循环)从下面的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
            }]
        }
    ]
}

欢迎来到堆栈溢出


您可以使用将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
放在我能放的任何地方