duanmiao6695 2015-11-22 09:22
浏览 23
已采纳

php - 从密钥名称获取JSON值

I have a JSON similar to the following:

{
    "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
        }
    ]
}

I want to get a list of each of the stamp_ids seperated by commas through PHP (eg. 14,20,33,31)

I have already tried this, with no luck:

$stampsdata     = json_decode($stampsjson, true);
$numberofstamps = $stampsdata['stamps']['stamp_id']);

Can anyone help?

展开全部

  • 写回答

1条回答 默认 最新

  • douyao7390 2015-11-22 09:31
    关注

    decode the JSON with json_decode and use array_column to get the IDs.

    working solution:

    // 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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部