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

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to