我找到了一个很好的答案但没有找到答案。
API返回类似此[{id:31, name:"blue"},{id:22, name:"green"},..]
我想从ID $api->[where id= 2]
我找到的唯一方法是将此数组转换为obj并将id作为键。有没有更好的PHP方式?
答案 0 :(得分:4)
您的解决方案是的最佳方式。类似的东西:
$results = json_decode($returned_JSON_string);
foreach($results as $result) {
if($result->id == 2) {
// Match!
break;
}
}
如果您不喜欢json_decode
创建object
的默认行为,可以指示它创建array
,如下所示:
$results = json_decode($returned_JSON_string, true);
答案 1 :(得分:2)
我认为您可以将json
编码为关联数组
$arr = json_decode($json, true); //note true as second parameter because we want as associative array
现在你可以用
来调用它echo $arr[1]['id'];
或循环数组。
答案 2 :(得分:2)
您可以使用array_filter:
$results = json_decode($returned_JSON_string);
$item = array_filter ($results, function($item) { $item['id'] == 2; });
答案 3 :(得分:1)
以下是在javascript中执行此操作的解决方案
function myIndexOf(arr, o) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].id == o) {
return i;
}
}
return -1;
}
var data = [{id:1, name:"blue"},{id:2, name:"green"}];
alert(data[myIndexOf(data,2)].name);
PHP版
function myIndexOf($arr, o) {
for (var i = 0; i < count(arr); i++) {
if ($arr[i]['id'] == o) {
return i;
}
}
return -1;
}
$data = json_decode($json_data);
echo $data[myIndexOf($data, 2)]['name']; // will output 'green'