首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中解析多级json

在php中解析多级json
EN

Stack Overflow用户
提问于 2017-07-26 02:28:59
回答 4查看 3.5K关注 0票数 2

我有这个json文件,我想要返回所有项目的"host_name“值。下面是我的php代码,我尝试了一些方法,使用true来解码数组中的json,或者不使用它,并使用foreach(),但是我不能这样做。

代码语言:javascript
复制
{
    "href": "https://webservice:8080",
    "items": [
        {
            "Hosts": {
                "cluster_name": "cluster1",
                "host_name": "server1"
            },
            "href": "https://server1:8080"
        },
        {
            "Hosts": {
                "cluster_name": "cluster1",
                "host_name": "server2"
            },
            "href": "https://server2:8080"
        },
        {
            "Hosts": {
                "cluster_name": "cluster1",
                "host_name": "server3"
            },
            "href": "https://server3:8080"
        }
    ]
}

这是我的php代码。想要尽可能简单地做这件事。我的目标是使用json ('host_name')的最后一个值来显示它们。

代码语言:javascript
复制
<?php
        $content = file_get_contents("test.json");
        $content = utf8_encode($content);
        $result = json_decode($content, true);
        var_dump($result);
        echo "<br><br><br>";

        #echo $result["items"]["Hosts"][0]["host_name"];

        foreach($result as $r) {
                echo $r['items']['Hosts']['cluster_name'].'<br>';
        }
?>

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-26 02:33:25

您只是循环遍历了错误的数组,应该是

代码语言:javascript
复制
foreach($result['items'] as $item) {
    echo $item['Hosts']['host_name'];
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-26 02:33:57

$result需要为$result['items']

代码语言:javascript
复制
foreach($result['items'] as $r) {
  echo $r['Hosts']['cluster_name'];
  echo PHP_EOL;
}

输出:- https://eval.in/837593

票数 2
EN

Stack Overflow用户

发布于 2017-07-26 02:39:42

如上所述,您正在循环遍历错误的数组。您也可以像这样循环遍历对象:

代码语言:javascript
复制
$obj = json_decode(utf8_encode(file_get_contents("test.json")));
foreach($obj->items as $item)
{
    var_dump($item->Hosts->host_name);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45311047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档