我寻找了一个好的答案,但没有找到。
API 像这样返回 JSON[{id:31, name:"blue"},{id:22, name:"green"},..]
我想从 id 中获取名称$api->[where id= 2]
我发现的唯一方法是将此数组转换为 obj 并将 id 作为键。没有更好的 PHP 方式吗?
您的解决方案是最好的方法。就像是:
$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);
你可以使用array_filter:
$results = json_decode($returned_JSON_string);
$item = array_filter ($results, function($item) { $item['id'] == 2; });
我认为您可以将您的编码json
为关联数组
$arr = json_decode($json, true); //note true as second parameter because we want as associative array
现在你可以用
echo $arr[1]['id'];
或在数组中循环。
这是在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'