On Thu, 2006-10-19 at 23:58 -0500, Larry Garfield wrote: > That depends on what your data structure is, exactly, and what sort of tree > structure you want on the other side. Please be more specific. > > On Thursday 19 October 2006 09:08, Angelo Zanetti wrote: > > Hi all, > > > > I have an associative array, which contains parent and child > > relationships. I've searched the web for creating a tree structure from > > this and found a few good sites but doesnt help 100% perhaps someone can > > point me in the correct direction? I've started to code it got to a > > point where I cant go any further, the code is pseudo code and dont want > > to reinvent the wheel. > > > > any suggestions would be really appreciated. It's kinda simple... <?php //////////////////////////////// // // 6 5 // / \ / \ // 2 7 9 3 // / | \ // 1 4 8 // //////////////////////////////// $list = array ( array ( 'id' => '1', 'pid' => '2', 'value' => 'Value Foo 1', ), array ( 'id' => '2', 'pid' => '6', 'value' => 'Value Foo 2', ), array ( 'id' => '3', 'pid' => '5', 'value' => 'Value Foo 3', ), array ( 'id' => '4', 'pid' => '2', 'value' => 'Value Foo 4', ), array ( 'id' => '5', 'pid' => '0', 'value' => 'Value Foo 5', ), array ( 'id' => '6', 'pid' => '0', 'value' => 'Value Foo 6', ), array ( 'id' => '7', 'pid' => '6', 'value' => 'Value Foo 7', ), array ( 'id' => '8', 'pid' => '2', 'value' => 'Value Foo 8', ), array ( 'id' => '9', 'pid' => '5', 'value' => 'Value Foo 9', ), ); // // Set up indexing of the above list (in case it wasn't indexed). // $lookup = array(); foreach( $list as $item ) { $item['children'] = array(); $lookup[$item['id']] = $item; } // // Now build tree. // $tree = array(); foreach( $lookup as $id => $foo ) { $item = &$lookup[$id]; if( $item['pid'] == 0 ) { $tree[$id] = &$item; } else if( isset( $lookup[$item['pid']] ) ) { $lookup[$item['pid']]['children'][$id] = &$item; } else { $tree['_orphans_'][$id] = &$item; } } // // WooooooohoooooooooOO! // print_r( $tree ); ?> Cheers, Rob. -- .------------------------------------------------------------. | InterJinn Application Framework - http://www.interjinn.com | :------------------------------------------------------------: | An application and templating framework for PHP. Boasting | | a powerful, scalable system for accessing system services | | such as forms, properties, sessions, and caches. InterJinn | | also provides an extremely flexible architecture for | | creating re-usable components quickly and easily. | `------------------------------------------------------------' -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php