dongluo6343 2011-11-26 16:44
浏览 20

如何形成PHP树菜单? [关闭]

I have some paths stored in my db as: They are unsorted and can be any length.

--------Paths--------

C:/devices/data1

C:/devices/data1/application2

C:/devices/data1/application1

C:/devices/data2/application3

C:/devices/data2/application2

C:/devices/data2/application1

C:/devices/data1/application3

I need to form a menu as below:

C > devices > data1> application1 
                     application2 
                     application3 
              data2> application1 
                     application2 
                     application3 

Could you please help me solve this problem?

Wish for some quick responses. Thanks!

Ulvund's solution works for me but now I need to generate the links to the href tags:

I tried the following:

http://www.pbalan01.0fees.net/god1.php

Please help me remove the extra node: it currently generates...

C:/devices/data1
           data1/application1
                 application2
                 application3
           data2
           data2/application1
                 application2
                 application3
  • 写回答

2条回答 默认 最新

  • dqwh1203 2011-11-26 16:50
    关注
    $paths[] = "C:/devices/data1";
    $paths[] = "C:/devices/data1/application2";
    $paths[] = "C:/devices/data1/application1";
    $paths[] = "C:/devices/data2/application3";
    $paths[] = "C:/devices/data2/application2";
    $paths[] = "C:/devices/data2/application1";
    $paths[] = "C:/devices/data1/application3";
    
    
    function to_tree(&$multifruit, $fruit) {
        if (count($fruit)>2) {
            $shifted = array_shift($fruit);
            to_tree($multifruit[$shifted], $fruit);
            return $multifruit;
        } else {
            return $multifruit[$fruit[0]][] = $fruit[1];
        }   
    }   
    
    sort($paths);
    foreach($paths as $path) {
       $path = explode("/",$path);
       to_tree($multifruit, $path);
    }   
    
    print_r($multifruit);
    /* Result
    Array
    (
        [C:] => Array
            (
                [devices] => Array
                    (
                        [0] => data1
                        [data1] => Array
                            (
                                [0] => application1
                                [1] => application2
                                [2] => application3
                            )
    
                        [data2] => Array
                            (
                                [0] => application1
                                [1] => application2
                                [2] => application3
                            )
    
                    )
    
            )
    
    )
    
    
    */
    

    EDIT:

    To have your full desired result (or the closest you will get with my help): Use the following code: http://hpaste.org/54546

    See a sample on http://redditlist.com/test2.php

    EDIT 3:

    http://redditlist.com/test3.php

    http://hpaste.org/54599

    评论

报告相同问题?

悬赏问题

  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线