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]

 



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;
>
>

[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