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

Reply via email to