【问题标题】:PHP - get JSON parent value [closed]PHP - 获取 JSON 父值 [关闭]
【发布时间】:2023-03-14 05:16:02
【问题描述】:

在 php 中,我试图从这个 json 文件中获取数字(0、13、20、45、53、56):

{
    "0": {
        "classcat": "a",
    },
    "13": {
        "classcat": "b",
    },
    "20": {
        "classcat": "c",
    },
    "45": {
        "classcat": "d",
    },
    "53": {
        "classcat": "e",
    },
}

我将此文件填充到带有 foreach 循环的选择字段中。我想要的输出是:

<select>
<option value="(classcatvalue)">(classcatvalue + number)</option>
<option value="a">a 0</option>
<option value="b">b 13</option>
<option value="c">c 20</option>
<option value="d">d 45</option>
<option value="e">e 53</option>
</select>

看起来很简单,但我想不通。 有什么想法吗?

【问题讨论】:

  • json_decode,循环数组\对象。
  • 为什么所有的反对票?试图让它变得简单,并带有代码示例,但仍然......
  • @stangerup 您的问题中没有 PHP 代码,这是主题本身。无论如何,你可能会因为没有展示足够的研究而被否决,因为使用 PHP 解析 JSON 是一个非常常见的主题,例如一个简单的搜索可以为你解决这个问题。而且,您的 JSON 无效。只有当你使它有效时,像接受的答案这样的答案才有效......

标签: php json populate


【解决方案1】:

在对字符串进行 json_decode 后使用 array_keys。

$values = array_keys(json_decode($json_str, true));

// Now you can output them like:
Echo $values[1]; // 13

【讨论】:

  • 谁能评论为什么投反对票?
【解决方案2】:

一个主要问题是您的 JSON 无效。你有很多额外的逗号。修复该问题后,您可以使用json_decode() 将其转换为关联数组:

$options = json_decode(<<<JSON
{
    "0" : { "classcat": "a" },
    "13": { "classcat": "b" },
    "20": { "classcat": "c" },
    "45": { "classcat": "d" },
    "53": { "classcat": "e" }
}
JSON
, true);

并且可以选择简化值,删除内部对象/数组并自己编写值:

array_walk($options, function(&$v, $k) { $v = $v['classcat']; });

现在只需使用foreach 循环来输出您的选项:

<select>
  <option value="(classcatvalue)">(classcatvalue + number)</option>
<?php foreach ($options as $n => $cat) : ?>
  <option value="<?= $cat ?>"><?= "$cat $n" ?></option>
<?php endforeach; ?>
</select>

值没有被简化,应该使用$cat['classcat']

【讨论】:

    【解决方案3】:

    使用json_decode() 将JSON 转换为PHP 数组,然后使用foreach 对其进行循环。

    $array = json_decode($json, true);
    foreach ($array as $number => $value) {
        $classcatvalue = $value['classcat'];
        echo "<option value="$classcatvalue">$number $classcatvalue</option>";
    }
    

    【讨论】:

    • 如此简单。有用!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多