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
?但最好在提供相关数据的情况下提出新问题。