2012-01-01 3 views
7

Таким образом у меня есть объект JSON, который имеет структуру, подобную так:PHP Поиск JSON для значения

{ 
"John Doe": [ 
    { 
     "childName": "Harry", 
     "childAge": 15, 
     "childGender": "Male" 
    }, 
    { 
     "childName": "Sally", 
     "childAge": 9, 
     "childGender": "Female" 
    }, 
], 
"Miss Piggy": [ 
    { 
     "childName": "Jane", 
     "childAge": 20, 
     "childGender": "Female" 
    } 
], 

}

То, что я хочу сделать, это быть в состоянии сделать запрос для ChildName, childAge , или childGender, и вернуть этот под-объект, если он найден.

Например:

searchJson($jsonObj, 'childName', 'Sally') // returns {"childName":"Sally", "childAge":9,"childGender":"Female"} 

Что бы быть лучшим методом при идти на это?

ответ

18
function searchJson($obj, $field, $value) { 
    foreach($obj as $item) { 
     foreach($item as $child) { 
      if(isset($child->$field) && $child->$field == $value) { 
       return $child; 
      } 
     } 
    } 
    return null; 
} 
+0

Не забудьте 'json_decode' !!! –

+0

@JosephSilber: '$ obj' - это объект' stdClass', который будет являться результатом 'json_decode()'. –

+0

Простая логика, работает! Thanks – Baehr

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