2012-01-19 5 views
0

Я новичок в php. Мне нужна быстрая помощь с json_decode/php. Мне нужно получить значения g91 в массиве, как я могу это сделать? Я предполагаю, что есть некоторые рекурсии значения, которое мы можем перейти к json_decode ...Как использовать json_decode для извлечения внутренней информации

{ 
    "e": "none", 
    "f": "test", 
    "g": [ 
     { 
      "g1": "text2", 
      "g9": { 
       "text3": { 
        "g91": 0, 
        "g92": [ 
         "text5" 
        ] 
       } 
      } 
     }, 
     { 
      "g1": "text1",   
      "g9": { 
       "text4": { 
        "g91": 0, 
        "g92": [ 
         "text6", 
         "text7" 
        ] 
       } 
      } 
     } 
    ] 
} 

Пожалуйста, обратите внимание, что text3 не fixed..in следующей записи, у меня есть Text4 ..

Спасибо!

+0

Dup из [Получить информацию из JSON] (http://stackoverflow.com/questions/3879472 /), [Получить «оценку» из массива JSON] (http://stackoverflow.com/questions/8447084/) – outis

ответ

0

После декодирования вы получите массив PHP, просто перейдите к нужному указателю:

$myJson['g'][0]['g9']['text3']['g91']; 

Но вы можете сделать некоторые рекурсивный цикл, чтобы найти все результаты, которые вы искать в этом массиве.

Посмотрите в документации массив из PHP: http://br2.php.net/manual/en/book.array.php

0
$json = '{ 
    "e": "none", 
    "f": "test", 
    "g": [ 
     { 
      "g1": "text2", 
      "g9": { 
       "text3": { 
        "g91": 0, 
        "g92": [ 
         "text5" 
        ] 
       } 
      } 
     }, 
     { 
      "g1": "text1",   
      "g9": { 
       "text4": { 
        "g91": 0, 
        "g92": [ 
         "text6", 
         "text7" 
        ] 
       } 
      } 
     } 
    ] 
}'; 
$result = json_decode($json); 
var_dump(array_merge($result->g[0]->g9->text3->g91, $result->g[1]->g9->text3->g91)); 
5

Pass TRUE в json_decode в качестве второго параметра

$output = json_decode($input,TRUE); 

чем пересечь массивы. Это должно быть что-то вроде

$output['g'][0]['g9']['text3']['g91'] 

См json_decode

+0

, но text3 не фиксирован. При ссылке в цикле какое значение будет указано здесь ? – xyz

+0

Это дает ошибку PHP Неустранимая ошибка: Нельзя использовать объект типа stdClass как массив в .... в номере строки, где я пытаюсь ссылаться на вывод вроде этого .. – xyz

0

Я обновил JSON для целей тестирования:

<script type="text/javascript"> 
    var json ={ 
     "e": "none", 
     "f": "test", 
     "g": [ 
      { 
       "g1": "text2", 
       "g9": { 
        "text3": { 
         "g91": 83, 
         "g92": [ 
          "text5" 
         ] 
        } 
       } 
      }, 
      { 
       "g1": "text1",   
       "g9": { 
        "text4": { 
         "g91": 12, 
         "g92": [ 
          "text6", 
          "text7" 
         ] 
        } 
       } 
      } 
     ] 
    } 
    var arr=json["g"]; 
    for(key in arr){ 
     var obj=arr[key]["g9"]; 
     for(tex in obj) 
     { 
     alert(obj[tex]["g91"]); 
     } 
    } 
</script> 
+0

Когда я запускаю его как «php file.php», я просто получить дамп самого файла .. (file.php содержит вышеуказанный код) – xyz

Смежные вопросы