如何获取JSON对象取决于它的值

时间:2009-09-08 07:04:04

标签: php 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 个答案:

答案 0 :(得分: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'];

答案 1 :(得分: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是顺序的。这种使用对象属性的方法不受这种限制的约束。