2012-01-01 78 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' !!! – 2012-01-01 01:22:11

+0

@JosephSilber:'$ obj'是一個'stdClass'對象,它是'json_decode()'的結果。 – 2012-01-01 01:23:25

+0

簡單的邏輯,工作!謝謝 – Baehr 2012-01-01 01:37:04