在PHP中解析JSON时获取兄弟值

时间:2017-06-11 14:02:19

标签: php json

我正在解析PHP中的JSON文件,并遇到了一些数据结构的问题,我无法弄清楚如何理解。这就是一个数据节点的样子:

{
    "data": [{
        "title": "Some title",
        "subtitle": "Some subtitle",
        "description": "Some description",
        "labels": [{
            "type": "itemId",
            "raw": "someId12345"
        }, {
            "type": "itemtype",
            "raw": "general"
        }]
    }]
}

这是我正在使用的基本代码:

$url = 'data.json';
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach($json['data'] as $item) {
    return $item['title'];
    return $item['description'];
}

获取标题和说明有效,但我正在努力使用这些标签。我想获得类型itemId的“原始”值(即someId12345),但我无法弄清楚如何。标签不是固定的顺序,否则我可以使用这样的东西来获取ID:

return $item['labels'][0]['raw'];

我尝试创建一个单独的foreach,但这只会给我一个关于所有值的未识别索引。

foreach($json['data'] as $ID) {
    if($ID['labels']['itemId'] == $_GET['labels']['itemId']) {
        return $ID['raw'];
        break;
        }
}

如何获取兄弟值,以便我最终得到这些数据:

Some title
Some description
someId12345

1 个答案:

答案 0 :(得分:2)

与你正在做的事情没有什么不同:

foreach ($json['data'] as $item) {
  foreach ($item['labels'] as $label) {
    var_dump($label['raw']);
  }
}

Demo

要按type进行过滤,您可以使用if构造:

if ($label['type'] === 'itemId') {
  var_dump($label['raw']);
}