2017-12-18 10 views
-3

을 얻을, 나는 얻으려고이 JSON 파일에서 숫자 (0, 13, 20, 45, 53, 56) :PHP - JSON 부모 값 PHP에서

{ 
    "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, 루프 \ 개체. – nogad

+0

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

+0

왜 모든 downvotes? 코드 예제를 사용하여 간단하고 복잡하게 만들려고 노력합니다. – 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> 

유 한이 마땅하지 값이 단순화되었다 se $cat['classcat'].