0

次の JSON 応答の例があります (通常は長い応答)。

  "responseHeader":{
  "status":0,
  "QTime":2,
  "params":{
  "indent":"true",
  "start":"0",
  "q":"hi",
  "wt":"json",
  "rows":"2"}},
"response":{"numFound":69,"start":0,"docs":[
  {
    "id":335,
    "Page":127,
    "dartext":" John Said hi !      ",
    "Part":1},
  {
    "id":17124,
    "Page":127,
    "Tartext":" Mark said hi ",
    "Part":10}]
}}

文字列のタイプのプロパティにのみアクセスしたいのですが、問題はプロパティの名前が一定ではないため、次のようなものを使用できません。

$obj =json_decode(file_get_contents($data));
$count = $obj->response->numFound;

for($i=0; $i<count($obj->response->docs); $i++){
   echo $obj->response->docs[$i]->dartext;
} 

他のオブジェクトでは dartext ではなく、Tartext であるためです。

名前ではなくインデックスで3番目のプロパティにアクセスするにはどうすればよいですか?

4

3 に答える 3

1

これを試すことができます:

$my_key = array();
$obj =json_decode(file_get_contents($data));
$count = $obj->response->numFound;
$k =1;
foreach ($obj->response->docs as $k => $v) {
    if ($k == 3) {
        $my_key[$k] = $v; // Here you can put your key in 
    }
    $k++;
}
于 2013-07-17T10:55:12.230 に答える
0

ドキュメントから:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

使用json_decode(file_get_contents($data), true)すると、配列が返されます。

その後、このようなことを実行して、キーではなくインデックスで配列にアクセスできます。

$keys = array_keys($json);
echo $json[$keys[2]];
于 2013-07-17T10:48:34.543 に答える