PHP - 获取JSON父值[关闭]

问题描述 投票:-3回答:3

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

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

我将此文件填充到带有foreach循环的selectfield。我想要的输出是:

<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>

看起来很简单,但我无法弄清楚。有任何想法吗?

php json populate
3个回答
0
投票

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

0
投票

一个主要问题是您的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']代替。


-2
投票

在json_decoded字符串后使用array_keys。

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

// Now you can output them like:
Echo $values[1]; // 13
© www.soinside.com 2019 - 2024. All rights reserved.