PHP拆分数组中标题为的对象数组

PHP拆分数组中标题为的对象数组,php,json,Php,Json,我有一组对象,如下所示: [ { "TYPE": "food", "NAME": "abc" }, { "TYPE": "fruit", "NAME": "xyz" }, { "TYPE": "food", "NAME": "def" }, { "TYPE": "food", "NAME": "ghi" }

我有一组对象,如下所示:

[
    {
        "TYPE": "food",
        "NAME": "abc"
    },
    {
        "TYPE": "fruit",
        "NAME": "xyz"
    },
    {
        "TYPE": "food",
        "NAME": "def"
    },
    {
        "TYPE": "food",
        "NAME": "ghi"
    },
]
如何将此对象数组拆分为多个数组,以使所需的输出如下所示:

[
    {
        "TYPE": "food",
        "ITEMS": 
        [
            {
                "TYPE": "food",
                "NAME": "abc"
            },
            {
                "TYPE": "food",
                "NAME": "def"
            },
            {
                "TYPE": "food",
                "NAME": "ghi"
            },
        ]
    },
    {
        "TYPE": "fruit",
        "ITEMS": 
        [
            {
                "TYPE": "fruit",
                "NAME": "xyz"
            },
        ]
    },
]
请注意,父对象有自己的标识符(类型)

我试过这个:

    $result = [];
    foreach ($DT_DATA as $key => $value) {
        $group = $value->TYPE;
        if (!isset($result[$group])) {
            $result[$group] = [];
        }

        $result[$group][] = $value;
    }
    $result = array_values($result);

但是父组不包含“TYPE”和“ITEMS”数组

一些可以完成此任务的改进:

$result = [];
foreach ($DT_DATA as $key => $value) {
    $group = $value->TYPE;
    if (!isset($result[$group])) {
        // init with array of required structure
        $result[$group] = [
            'TYPE' => $group,
            'ITEMS' => [],
        ];
    }

    // add $value to `ITEMS` subarray
    $result[$group]['ITEMS'][] = $value;
}
$result = array_values($result);

一些可以完成这项工作的改进:

$result = [];
foreach ($DT_DATA as $key => $value) {
    $group = $value->TYPE;
    if (!isset($result[$group])) {
        // init with array of required structure
        $result[$group] = [
            'TYPE' => $group,
            'ITEMS' => [],
        ];
    }

    // add $value to `ITEMS` subarray
    $result[$group]['ITEMS'][] = $value;
}
$result = array_values($result);

你知道我如何用不同的键进入第三关吗?比如,第三个键“颜色”。这意味着它将是TYPE>COLOR>
{TYPE:“FRUIT”,NAME:“xyz”,COLOR:“RED”}
添加到
项下
COLOR
?但最好在提供相关数据的情况下提出新的问题。你知道如何用不同的键将我划分为第三级吗?比如,第三个键“颜色”。这意味着它将是TYPE>COLOR>
{TYPE:“FRUIT”,NAME:“xyz”,COLOR:“RED”}
添加到
项下
COLOR
?但最好在提供相关数据的情况下提出新问题。