首页 > 解决方案 > JSON 使用 PHP 获取动态变化的键名

问题描述

我无法从 JSON 字符串中获取动态键的名称。我正在使用 PHP

这是 JSON 的示例

{
"_text": "this is a test",
"entities": {
    "dynamic_key": [
        {
            "confidence": 0.99,
            "value": "thi is the answer"
        }
    ]
},
"msg_id": "1234532123"
}

我正在使用 foreach 遍历 json 键并获取值

foreach ($json as $obj) {
        $search_term = $obj->_text;
        $msg_id = $obj->msg_id;
    }

但我不知道如何获得每次都会改变的“dynamic_key”的值,因此我也无法获得“信心和价值”键的值。

关于如何解决这个问题的任何想法?

跟随@Dimi,解决方案。这就是我最终得到的

$data=json_decode($json,true);

foreach ($data['entities'] as $key=>$val)
{
echo "Entity: $key";

    foreach ($data['entities'] as $keys){
        $conf = $keys[0]['confidence'];
        $answer = $keys[0]['value'];
        echo "conf: $conf, answ: $answer";
    }
}

标签: phpjsonforeach

解决方案


使用您显示的数据,似乎没有用于起始 JSON 的数组。

但是使用该数据,以下内容将用于foreach获取键和数据,然后是另一个子循环来获取confidence值...

$search_term = $json->_text;
$msg_id = $json->msg_id;
foreach ( $json->entities as $key => $entities )    {
    echo $key.PHP_EOL;
    foreach ( $entities as $entity) {
        echo $entity->confidence.PHP_EOL;
    }
}

推荐阅读