Re: Display Array Tree as Menu - Can't figure out how to find depth with something over 2 levels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 16, 2012 at 11:05 AM, Tristan <sunnrunner@xxxxxxxxx> wrote:
> Thanks David, Here's my tree creation. I'm trying to either put depth count
> on each array or run through the tree and figure it out after. I just can't
> figure out where to put it :D
>
> Great very lightweight script to create a tree from parent id and id if you
> want to save this one for yourself btw.
>
> function createTree(&$list, $parent){
>     $tree = array();
> //$depth = 0;
>     foreach ($parent as $k=>$l){
> //echo $k.'<br />';
>         if(isset($list[$l['section_id']])){
> //echo $k.'<br />';
> $l['depth'] = $k;
>             $l['children'] = createTree($list, $list[$l['section_id']]);
>         } else {
> $l['depth'] = 0;
> }
>         $tree[] = $l;
>     }
>     return $tree;
> }
>
> $arr = $dashSections;
>
> $new = array();
> foreach ($arr as $a){
>     $new[$a['section_parent_id']][] = $a;
> }
>
> // CREATE THE TREE
> $tree = createTree($new, $new[0]);
> //echo count($tree);
> //print_r($tree);
>
>
>
> On Thu, Aug 16, 2012 at 11:36 AM, David OBrien <dgobrien@xxxxxxxxx> wrote:
>
>> On Thu, Aug 16, 2012 at 12:40 PM, Tristan <sunnrunner@xxxxxxxxx> wrote:
>>
>>> I can't for the life of me figure out how to find the depth of the array
>>> that I'm looping through to output tabs or indentations to the display for
>>> each depth. The entries also have section postition if you can figure out
>>> how to include that within each depth of the results I will buy you a case
>>> of beer.
>>>
>>> I was hoping to do something like...
>>>
>>> foreach($trees as $tree){
>>>     if($tree['current_depth'] == 0){
>>> echo $tree['menu_item'];
>>>     } else if($tree['current_depth'] == 1){
>>> echo 'indentation'.$tree['menu_item'];
>>>     } else if($tree['current_depth'] == 2){
>>> echo 'indentation - indentation'.$tree['menu_item'];
>>>     }
>>> }
>>>
>>>
>>> Or maybe even like this...
>>>
>>> foreach($trees as $tree){
>>> // output &nbsp; the amount of times current_depth equals
>>> echo str_repeat("&nbsp;", $tree['current_depth'])
>>> }
>>>
>>> I have my $tree structure as:
>>>
>>> [16] => Array
>>>     (
>>>         [section_id] => 21
>>>         [section_parent_id] => 0
>>>         [section_pos] => 30
>>>         [section_name] => Resource Center
>>>         [has_order] => 1
>>>         [section_has_hierarchy] => 1
>>>         [total_entries] => 35
>>>         [children] => Array
>>>             (
>>>                 [0] => Array
>>>                     (
>>>                         [section_id] => 38
>>>                         [section_parent_id] => 21
>>>                         [section_pos] => 31
>>>                         [section_name] => Resource Center
>>>                         [has_order] => 1
>>>                         [section_has_hierarchy] => 1
>>>                         [total_entries] => 35
>>>                         [children] => Array
>>>
>>>                             (
>>>                                 [0] => Array
>>>                                     (
>>>                                         [section_id] => 39
>>>                                         [section_parent_id] => 38
>>>                                         [section_pos] => 32
>>>                                         [section_name] => Resource Center
>>>                                         [has_order] => 1
>>>                                         [section_has_hierarchy] => 1
>>>                                         [total_entries] => 35
>>>                                     )
>>>
>>>                                 [1] => Array
>>>                                     (
>>>                                         [section_id] => 40
>>>                                         [section_parent_id] => 38
>>>                                         [section_pos] => 33
>>>                                         [section_name] => Resource Center
>>>                                         [has_order] => 1
>>>                                         [section_has_hierarchy] => 1
>>>                                         [total_entries] => 35
>>>                                     )
>>>                             )
>>>
>>>
>>>
>>>
>>> [19] => Array
>>>     (
>>>         [section_id] => 26
>>>         [section_parent_id] => 0
>>>         [section_pos] => 45
>>>         [section_name] => Resource Center
>>>         [has_order] => 1
>>>         [section_has_hierarchy] => 1
>>>         [total_entries] => 55
>>>         [children] => Array
>>>             (
>>>                 [0] => Array
>>>                     (
>>>                         [section_id] => 27
>>>                         [section_parent_id] => 26
>>>                         [section_pos] => 46
>>>                         [section_name] => Newsletters Intro
>>>                         [has_order] => 0
>>>                         [section_has_hierarchy] => 1
>>>                         [total_entries] => 1
>>>                     )
>>>
>>>             )
>>>
>>>     )
>>>
>>
>>
>> maybe something like this
>>
>> in the foreach
>> if parent = 0 then level = 0;
>> if haschilden is true increment level;
>>
>>

How is the menu being displayed?  In a browser like jquery's plugin superfish?

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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux