php-从键名获取JSON值
我有一个类似于以下内容的JSON:php-从键名获取JSON值,php,json,Php,Json,我有一个类似于以下内容的JSON: { "name": "Activities", "description": "Activities", "parent_group_id": 0, "display": "Activities", "group_id": 7, "stamps": [ { "stamp_id": 14, "name": "Stamp 14",
{
"name": "Activities",
"description": "Activities",
"parent_group_id": 0,
"display": "Activities",
"group_id": 7,
"stamps": [
{
"stamp_id": 14,
"name": "Stamp 14",
"rank": 2
},
{
"stamp_id": 20,
"name": "Stamp 20",
"rank": 4
}
]
},
{
"name": "Games",
"description": "Games",
"parent_group_id": 0,
"display": "Games",
"group_id": 6,
"stamps": [
{
"stamp_id": 33,
"name": "Stamp 33",
"rank": 3
},
{
"stamp_id": 31,
"name": "Stamp 31",
"rank": 1
}
]
}
我想通过PHP(例如14,20,33,31)获得每个用逗号分隔的戳记ID的列表
我已经试过了,但运气不好:
$stampsdata = json_decode($stampsjson, true);
$numberofstamps = $stampsdata['stamps']['stamp_id']);
有人能帮忙吗?用JSON解码JSON,然后用它来获取ID 工作解决方案:
// true needed to transform object to associative array
// $json contains your JSON string
$data = json_decode($json, true);
$stamps = [];
foreach ($data as $obj) {
$stamps[] = array_column($obj['stamps'], 'stamp_id');
}
// implode sub arrays and concatenate string
$str = '';
foreach ($stamps as $stamp) {
$sub = implode(',', $stamp);
$str .= $sub . ',';
}
// remove trailing comma
$stampIds = rtrim($str, ',');
print ($stampIds);
使用JSON_decode解码JSON,并用于获取ID 工作解决方案:
// true needed to transform object to associative array
// $json contains your JSON string
$data = json_decode($json, true);
$stamps = [];
foreach ($data as $obj) {
$stamps[] = array_column($obj['stamps'], 'stamp_id');
}
// implode sub arrays and concatenate string
$str = '';
foreach ($stamps as $stamp) {
$sub = implode(',', $stamp);
$str .= $sub . ',';
}
// remove trailing comma
$stampIds = rtrim($str, ',');
print ($stampIds);
您的json似乎无效。一个json对象可能只有一个根,但在这里它有多个json根元素。您的json似乎无效。一个json对象可能只有一个根,但在这里它有多个json根元素。