многоуровневое меню с многоуровневым массивом - PullRequest
1 голос
/ 25 января 2010

просто хотите спросить, кто-нибудь здесь может решить эту проблему?

Я хочу создать многоуровневое меню путем создания многоуровневого массива. Я просто не могу найти идеальное решение, он всегда получает ошибку array_push. В моем исследовании исходная идея пришла от http://www.weberdev.com/get_example-4830.html

Но все равно не может соответствовать моей потребности.

Это My 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 ]

2 голосов
/ 25 января 2010

Я бы посоветовал вам взглянуть на

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

Между этими двумя идеями вы можете получить очень работоспособное дерево массивов, которое будет строить все, что вам нужно.

0 голосов
/ 25 января 2010

[Решено]

Мне нужно сначала объявить массив, прежде чем я его нажму, иначе 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;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...