I use PHP and mySQL with Idiorm. That might not be relevant.
My PHP array
This array structure can be changed if needed for solving the problem.
array ( 33 => array ( 0 => '27', 1 => '41', ), 27 => array ( 0 => '64', 1 => '71', ), 0 => array ( 0 => '28', 1 => '29', 2 => '33', ), )
My hierarchical result
Something like this, but as an array...
0 => 28 29 33 27 => 64 71 41
Information
My own thoughts
I tried both of the above, just got a mess. It's a brainer.
The suggestion by @deceze worked. However the input array needs to change a litte, like this...
$rows = array( array( 'id' => 33, 'parent_id' => 0, ), array( 'id' => 34, 'parent_id' => 0, ), array( 'id' => 27, 'parent_id' => 33, ), array( 'id' => 17, 'parent_id' => 27, ), );
From https://stackoverflow.com/a/8587437/476:
function buildTree(array $elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[] = $element; } } return $branch; } $tree = buildTree($rows); print_r( $tree );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With