2

私のJSONがこれだとしましょう:

{
  "achievement": [
    {
      "title": "All Around Submitter",
      "description": "Get one piece of content approved in all six areas.",
      "xp": 500,
      "level_req": 1
    },
    {
      "title": "World-wide Photo Journalist",
      "description": "Get one photo approved in all six areas.",
      "xp": 500,
      "level_req": 1
    },
    {
      "title": "Ready for Work",
      "description": "Sign up and get validated",
      "xp": 50,
      "level_req": 1
    },
    {
      "title": "Asian Pride",
      "description": "Get ten pieces of content approved to a club in an Asian nation.",
      "xp": 1500,
      "level_req": 1
    }
  ]
}

私のPHPコードはこれなので、そのjsonファイルをロードします...:

<?php

$string = file_get_contents("achievements.json");
$json_a=json_decode($string,true);

foreach ($json_a as $key => $value){
  echo  $value[0]['title'] . " <br />";
}

?>

ただし、最初の配列を出力するだけです。知っている。たった1。しかし、foreachループはどうですか?行ごとにループしないのはなぜですか?

4

3 に答える 3

7

キーが1つしかないトップレベルの配列をループしています。achievement

代わりに、

foreach ($json_a['achievement'] as $key => $value){
  echo  $value['title'] . " <br />";
}

ヒント:[0]特定のコードの臭いです。

于 2012-09-16T22:22:43.557 に答える
1

ここでこれを試してください

$string = file_get_contents("achievements.json");
$json_a=json_decode($string,true);

foreach ($json_a['achievement'] as $key => $value){
  echo  $value['title'] . " <br />";
}

最上位の配列をループしていましたが、jsonを解析すると、次のようになります。

array(1) {
  ["achievement"]=>
  array(4) {
  //your other arrays
  }
}
于 2012-09-16T22:24:50.930 に答える
0

ループしている配列にはキーが1つしかないため、機能していません。これは、現在のjsonが与えられた場合achievementsに、によって返される配列です。json_decode()それをループすると、あなたはあなたが求めているものを手に入れるでしょう:

foreach ($json_a['achievement'] as $key => $value){
    echo $value['title'] . "<br />";
}
于 2012-09-16T22:23:49.603 に答える