2009-09-08 41 views
1

有沒有一種方法可以從JSON對象數組中取得JSON對象,取決於它的值?如何獲取JSON對象,取決於它的值

我已經有了:

$users = [{"id":1, "name":"Some Name"}, 
      {"id":2, "name":"Another Name"}, 
      {"id":3, "name":"Third Name"}]; 

而且我要的是拉出取決於ID的用戶。所以我可能會在user=2發送一個AJAX呼叫。我想要的是從JSON數組中提取id爲2的用戶。

我想知道這是否是最好的方法。我可以完全訪問以另一種方式設置JSON數組,如果這樣做會更容易。

回答

2

如果你在同一個數組上執行多次操作/搜索,你可能會考慮使用id作爲散列表/數組的鍵。

$json = '[{"id":1, "name":"Some Name"}, 
      {"id":4, "name":"Another Name"}, 
      {"id":9, "name":"Third Name"}]'; 

$users = array(); 
foreach(json_decode($json, true) as $u) { 
    $users[$u['id']] = $u; 
} 

echo $users[9]['name']; 
+0

+1這麼明顯......一旦你看到解決方案 – Christophe 2011-11-10 23:54:57

0

如果你想輕鬆檢索用戶在客戶端上的:

jsonData = 
{ 
    "selectedId": 2, 
    "users": 
    { 
    "Id1": {"id":1, "name":"Some Name"}, 
    "Id2": {"id":2, "name":"Another Name"}, 
    "Id3": {"id":3, "name":"Third Name"}, 
    "Id100": {"id":100, "name":"Some Name"} 
    } 
} 

,並在客戶端上...

var selectedId = data.selectedId; 
var user = data.users["Id" + selectedId]; 

你可能甚至不需要「ID」前綴在這裏。我對基於陣列的方法的擔憂是,您無法保證ID是順序的。這種使用對象屬性的方法不受這種限制。