2017-12-18 8 views
-3

を取得し、私はこのJSONファイルから数字(0、13、20、45、53、56)を取得しようとしている:PHP - PHPでJSONの親値

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

シンプルに見えますが、わかりません。 アイデア

+0

json_decode、array \ objectをループします。 – nogad

+0

http://php.net/manual/en/function.json-decode.php http://php.net/manual/en/control-structures.foreach.php – Sammitch

+0

すべてのダウンボックスはなぜですか?それをシンプルにしようとすると、コード例を使用して、まだ... – stangerup

答えて

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

とても簡単です。できます!ありがとうございました。 – stangerup

-2

文字列をjson_decodedした後に、array_keysを使用します。

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

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

なぜdownvoteにコメントすることができます誰? – Andreas

0

主な問題は、JSONが有効でないことです。余分なコンマがたくさんあります。内部オブジェクト/配列および値そのものを書くの除去、

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

そして、必要に応じて値を簡素化:あなたはjson_decode()との連想配列にそれを変換することができ、という固定した後

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> 

は、Uに1があるべきではなく、値が単純化されていましたse $cat['classcat']