У меня есть функция в моем проекте, которая возвращает массив, подобный этому
array (size=6)
0 =>
array (size=4)
'id' => string '1' (length=1)
'user_id' => string '1' (length=1)
'parent_id' => string '0' (length=1)
'name' => string 'jack' (length=4)
1 =>
array (size=4)
'id' => string '2' (length=1)
'user_id' => string '6' (length=1)
'parent_id' => string '1' (length=1)
'name' => string 'jill' (length=4)
2 =>
array (size=4)
'id' => string '3' (length=1)
'user_id' => string '7' (length=1)
'parent_id' => string '2' (length=1)
'name' => string 'mary' (length=4)
3 =>
array (size=4)
'id' => string '4' (length=1)
'user_id' => string '2' (length=1)
'parent_id' => string '1' (length=1)
'name' => string 'scriptfloor' (length=11)
Я хотел бы преобразовать это во вложенный массив на основе родительского идентификатора в этот
{
"id": "1",
"user_id": "1",
"parent_id": "0",
"name": "jack",
"children": [
{
"id": "2",
"user_id": "6",
"parent_id": "1",
"name": "jill"
},
{
"id": "4",
"user_id": "2",
"parent_id": "1",
"name": "scriptfloor"
},
{
"id": "6",
"user_id": "3",
"parent_id": "1",
"name": "silas"
}
]
}
Пока я поднялся только на один вложенный уровень. Я хотел бы иметь возможность сделать многомерный массив из n-уровней. Мне это нужно для построения древовидной иерархии пользователей и пользователей, которые их направили. Любая помощь будет оценена
Я использовал эту функцию, где $ items - несортированный массив
for ( $count = 0; $count < count( $items ); $count ++ ) {
if ( count( $items[ $count ] ) > 0 ) {
foreach ( $items[ $count ] as $itm ) {
if ( $itm['parent_id'] == $tree['user_id'] ) {
$tree['children'][] = $itm;
}
}
}
}