On 23/06/2011, at 9:57 AM, Simon J Welsh wrote: > On 23/06/2011, at 9:53 AM, Scott Baker wrote: > >> I have a bunch of records in a DB that look like >> >> id | parent_id >> -------------- >> 1 | 4 >> 2 | 4 >> 3 | 2 >> 4 | 0 >> 5 | 2 >> 6 | 1 >> 7 | 3 >> 8 | 7 >> 9 | 7 >> >> I want to build a big has that looks like: >> >> 4 -> 1 -> 6 >> -> 2 -> 3 -> 7 -> 9 >> -> 5 -> 8 >> >> I'm like 90% of the way there, but I can't get my recursive assignment >> to work. Has anyone done this before that could offer some pointers? >> Here is my sample code thus far: >> >> http://www.perturb.org/tmp/tree.txt >> >> I can get one level of depth, but nothing more than that :( > > I haven't looked that much into your code, but: > $children = find_children($id,$list); > > $list is never defined.
On further inspection, that's not the problem at all. The problem's around assign_children($pid,$list,&$new); The previous line you defined $new with $new = $leaf[$pid], *copying* that node into $new. Thus the assign_children() call updates $new, but not $lead[$pid]. You can fix this by either assigning $new by reference ($new =& $leaf[$pid]) or by passing a reference to $lead[$pid] to assign_children instead of $new. --- Simon Welsh Admin of http://simon.geek.nz/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php