2012-01-01 7 views
7

Así que tiene un objeto JSON que tiene una estructura de este modo:PHP JSON de búsqueda para el valor

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

}

Lo que quiero hacer es ser capaz de hacer una consulta para el ChildName, childAge o childGender, y devuelve ese subobjeto si se encuentra.

Por ejemplo:

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

¿Cuál sería el mejor método a ir en este?

Respuesta

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

No olvides 'json_decode' !!! –

+0

@JosephSilber: '$ obj' es un objeto' stdClass', que sería el resultado de 'json_decode()'. –

+0

¡Lógica simple, funciona! Gracias – Baehr