多级菜单,多级数组

时间:2010-01-25 02:39:11

标签: php arrays menu

只想问一下这里有人可以解决这个问题吗?

我想通过使用多级数组生成来创建多级菜单。 我只是无法得到完美的解决方案,它总是得到array_push错误。 我的研究最初的想法来自http://www.weberdev.com/get_example-4830.html

但仍然无法满足我的需要。

这是我的MySQL

[code]
-----------------------------------------
|id | parent_id| name    | link     |seq
|1  |  0       |dashboad |dashboard/|1
|2  |  0       |menu1    |menu1/    |2
|3  |  0       |menu2    |menu2/    |3
|4  |  0       |menu3    |menu3/    |4
|5  |  2       |add      |add/      |1
|6  |  3       |add      |add/      |1
|7  |  2       |edit     |edit/     |2
|8  |  4       |add      |add/      |1
------------------------------------------
[/code]

我想要我的数组这样的东西

array('dashboard'=>array(
                         'id'=>'',
                         'name'=>'dashboard',
                         'title'=>'dashboard',
                         'permalink'=>base_url().'dashboard/',
                         'active'=>FALSE,
                         'child'=>NULL
                         ),
     'menu1'=>array(
                         'id'=>'',
                         'name'=>'menu1',
                         'title'=>'menu1',
                         'permalink'=>base_url().'menu1/',
                         'active'=>FALSE,
                         'child'=>array(
                                       'add'=>array(
                                                     'id'=>'',
                                                     'name'=>'add',
                                                     'title'=>'add',
                                                     'permalink'=>base_url().'menu1/add',
                                                     'active'=>FALSE,
                                                     'child'=>NULL
                                                     ),
                                       'edit'=>array(
                                                     'id'=>'',
                                                     'name'=>'edit',
                                                     'title'=>'edit',
                                                     'permalink'=>base_url().'menu1/edit/',
                                                     'active'=>FALSE,
                                                     'child'=>NULL
                                                     )
                                                   ),
                                 ),
      ...................[similar like above]
                                       );       

我只能做到push_array,但它有警告 警告:array_push()[function.array-push]:第一个参数应该是一个数组

我已经讨论了很多这个问题,但在我做了一些研究之后,大多数案例都在做多级菜单但是在一个级别的数组中。我想实现多级数组。有人可以帮忙吗?

我正在使用静态类型的临时数组。

2 个答案:

答案 0 :(得分:2)

我建议你看看

http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/ &安培; http://www.phpriot.com/articles/nested-trees-1

在这两个想法之间,您可以获得一个非常可行的数组树来构建您需要的任何内容。

答案 1 :(得分:0)

[解决]

我必须在推送之前先声明数组,否则PHP无法将数据推入其中,它将为空。赞美主!

if(!isset($option_results[$nav_ParentName]['child']))
                    {
                        $option_results[$nav_ParentName]['child'] = array();  
                    }
                    $option_results[$nav_ParentName]['child'] = $option_results[$nav_ParentName]['child'] + $temp;

但是这个解决方案的事情是不能声明$ array ['child'] = null;