|
Posted by "Richard Lynch" on 11/14/05 20:27
On Mon, November 14, 2005 7:46 am, Greg Schnippel wrote:
> I have a large data tree that I wanted to display in an outline
> format. I used a textbook tree recursion function to go through the
> data and display it as nested unordered lists:
>
> function outputTree($id) {
>
> if (checkChildObjectExists($id)) {
> print "<ul>";
> $child = getChildArray($id);
> foreach ($child as $key => $value) {
> print "<li><a
> href=\"/object/$key/\">$value</a></li>";
> outputTree($key);
> }
> print "</ul>";
> }
> }
>
> This works as expected:
>
>> Level 1 (Top)
> > Level 2
> > Level 3 (Bottom)
>
> However, I also want to display a reverse tree to allow users to trace
> their way back up the tree after landing on a lower branch. I tried to
> be clever and reverse the function above as:
>
> function outputReverseTree($id) {
>
> if (checkParentExists($id)) {
> print "<ul>";
> $parent = getParentArray($id);
> foreach ($parent as $key => $value) {
Just swap the order of these two lines:
> print "<li><a href=\"/object/$key/\">$value</a>\n";
> outputReverseTree($key);
So that you walk up to the ROOT of the tree *before* you start
printing stuff out.
> }
> print "</ul>";
> }
> }
>
> Which works, but there is something wrong with my logic as the tree
> comes back reversed:
>
>> Level 3 (Bottom)
> > Level 2
> > Level 1 (Top)
>
> Any suggestions on how to do this?
--
Like Music?
http://l-i-e.com/artists.htm
Navigation:
[Reply to this message]
|