PHP - 获取 JSON 父值

PHP - get JSON parent value

在 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_decoded 字符串之后使用 array_keys。

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

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

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

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

并可选择简化值,删除内部 object/array 并自己写入值:

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'] 代替。

使用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>";
}