【问题标题】:Get JSON Group Name By ID, Not Value通过 ID 而非值获取 JSON 组名称
【发布时间】:2017-08-10 16:17:59
【问题描述】:

我有一个像这样的有效 JSON 文件:

{
    "default": {
        "key_value": "Default Value"
    },
    "test": {
        "key_value": "Test Value"
    }
}

我想将组名作为字符串获取:“default”和“test”。 我知道我可以使用类似的东西:

{
    "general": {
        "id": "default",
        "key_value": "Default Value"
    },
    {
        "id": "test",
        "key_value": "Test Value"
    }
}

但是由于我的 JSON 是有效的,并且我的读取和保存文件的功能已经正常工作,我想用原始结构来实现这一点。

为了进行实验,我得到了类似的东西:

$json = file_get_contents("file.json");
$json_data = json_decode($json, true); // I guess assoc must be true?
foreach ($json_data as $item) } // My hope was that i am able to read $item, however it is an array
    echo $item["key_value"]."<br />"; // That gives me "Default Value" and "Test Value", so thats at least something
}

我猜“默认”和“测试”在 json 的第一个数组中? 现在我需要找到一种方法来读取它们并将它们保存为字符串。 foreach 不会有那么大的错误,因为如果添加了像“test2”这样的组,我也想阅读它。

我正在与未定义和非法的偏移量作斗争(因为我不能使用数组作为键?)。

因为我得到的值是这样的:

$json_data["default"]["key_value"]

我认为像 $json_data[0] 这样的东西应该是“默认”的。 显然,这也是一个数组吧?我已经在论坛中四处看了看,但不幸的是,没有人拥有与他们的问题得到解决时相同的 JSON 结构。 也许像这样使用它只是愚蠢,但必须有一种方法让它正常工作? 可能也只有 3 行代码,我现在还没到那里……我已经尝试了很多。

也许你们可以帮助我。

【问题讨论】:

    标签: php arrays json decode associative


    【解决方案1】:

    我想你想要的是这样的:

    foreach($json_data as $key=>$value) {
        echo $key, "<br />\n";
    }
    

    如果你想要更好一点,你可以使用array_keys():

    foreach(array_keys($json_data) as $key) {
        echo $key, "<br />\n";
    }
    

    【讨论】:

    • 哇,这正是我想要的!感谢您的快速响应!
    【解决方案2】:

    你必须试试这个循环:

    foreach ($array as $key => $value) {
            // you could print here the key or value
        }
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多