我正在收到一个JSON并尝试使用PHP解释一些值。
来自JSON转储的示例代码段:
["11811"]=>
object(stdClass)#15 (11) {
["parent_area"]=>
NULL
["generation_high"]=>
int(19)
["all_names"]=>
object(stdClass)#16 (0) {
}
["id"]=>
int(11811)
["codes"]=>
object(stdClass)#17 (3) {
["ons"]=>
string(2) "08"
["gss"]=>
string(9) "E15000008"
["unit_id"]=>
string(5) "41421"
}
["name"]=>
string(10) "South East"
["country"]=>
string(1) "E"
["type_name"]=>
string(15) "European region"
["generation_low"]=>
int(1)
["country_name"]=>
string(7) "England"
["type"]=>
string(3) "EUR"
}
由于有很多(嵌套)数据,我需要获取[“name”]的值,其中[“type_name”] =='欧洲地区'。
感谢。
答案 0 :(得分:0)
您可以使用 array_filter()
$data_array = array(...);
function is_european($data) {
return $data->type_name == 'European region';
}
$filtered = array_filter($data_array,'is_european');
然后使用过滤后的数组来获取值。
也许更好的方法是使用JsonPath,就像这样,假设你的数组是解码JSON(对象)的结果:
$names = jsonPath($data_object, "$.[?(@['type_name'] == 'European region')].name");
我自己没试过,可能需要一些修正。
答案 1 :(得分:-1)
试试这个:
<?php
$json = JSON_decode(str,true);
$arr = Array();
foreach($json as $f) {
/* eg. $f = $json["11811"] */
if($f['type_name'] == 'European region') {
$arr[] = $f['name'];
}
}
?>