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