$categories = [
[
'name' => 'Категория 1',
'id' => 1,
],
[
'name' => 'Категория 2',
'id' => 2,
],
[
'name' => 'Категория 3',
'id' => 3,
'parent_id' => 1,
],
[
'name' => 'Категория 4',
'id' => 4,
'parent_id' => 2,
],
[
'name' => 'Категория 5',
'id' => 5,
'parent_id' => 3,
]
];
$tmp = [];
foreach( $categories as $value ) {
if( ! isset( $value[ 'parent_id' ] ) ) {
$tmp[ $value[ 'id' ] ] = $value[ 'id' ];
${'category' . $value[ 'id' ]}[] = $value;
}
else {
$tmp[ $value[ 'id' ] ] = $value[ 'parent_id' ];
$key = $value[ 'id' ];
while( $key = array_search( $key, array_flip( $tmp ) ) ) {
$index = $tmp[ $key ];
}
${'category' . $index}[] = $value;
}
}
print_r( $category1 );
print_r( $category2 );