有没有办法根据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数组,如果这样可以更容易。
答案 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是顺序的。这种使用对象属性的方法不受这种限制的约束。