Robert Cummings wrote:
>
> 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
>
>
>
for web browser:
// WooooooohoooooooooOO!
//
echo '<pre>';
print_r( $tree );
--
View this message in context:
http://www.nabble.com/Creating-Tree-Structure-from-associative-array-tf2473585.html#a6920126
Sent from the PHP - General mailing list archive at Nabble.com.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php