Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-从键名获取JSON值_Php_Json - Fatal编程技术网

php-从键名获取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",

我有一个类似于以下内容的JSON:

{
    "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根元素。