Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перебрать многомерный массив с помошью рекурси 
:(
    Опции темы
Mushu
Дата 21.8.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 20.7.2004

Репутация: нет
Всего: -5



У меня вопрос такой есть массив 
Код

Array
(
    [1] => Array
        (
            [engine_name_menu] => База клиентов
            [engine_mod_id] => 0
            [childNodes] => Array
                (
                    [2] => Array
                        (
                            [engine_name_menu] => Учреждение
                            [engine_mod_id] => 0
                            [childNodes] => Array
                                (
                                    [3] => Array
                                        (
                                            [engine_name_menu] => Создать новое учреждение
                                            [engine_mod_id] => 1
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                    [4] => Array
                                        (
                                            [engine_name_menu] => Создать новое учреждение (заявка)
                                            [engine_mod_id] => 7
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                    [5] => Array
                                        (
                                            [engine_name_menu] => Просмотр/редактирование базы exht;ltybq
                                            [engine_mod_id] => 2
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                    [6] => Array
                                        (
                                            [engine_name_menu] => Удаление из базы
                                            [engine_mod_id] => 9
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                    [7] => Array
                                        (
                                            [engine_name_menu] => Удаление из базы (запрос)
                                            [engine_mod_id] => 8
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [8] => Array
                        (
                            [engine_name_menu] => Контактное лицо
                            [engine_mod_id] => 0
                            [childNodes] => Array
                                (
                                    [9] => Array
                                        (
                                            [engine_name_menu] => Созать новое контактное лицо
                                            [engine_mod_id] => 10
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                    [10] => Array
                                        (
                                            [engine_name_menu] => Просмотр/редактирование базы
                                            [engine_mod_id] => 12
                                            [childNodes] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [11] => Array
        (
            [engine_name_menu] => Мероприятия
            [engine_mod_id] => 0
            [childNodes] => Array
                (
                    [12] => Array
                        (
                            [engine_name_menu] => Планирование визита
                            [engine_mod_id] => 18
                            [childNodes] => Array
                                (
                                )

                        )

                    [13] => Array
                        (
                            [engine_name_menu] => Просмотр страницы планировщика
                            [engine_mod_id] => 17
                            [childNodes] => Array
                                (
                                )

                        )

                )

        )

)


Как его перебрать(пройти по всем элементом) с помошью рекурсии ? Вложенность может быть любая.
Зарание спасибо. Если можно примерр

Добавлено через 9 минут и 48 секунд
Сам массив
Код

a:2:{i:1;a:3:{s:16:"engine_name_menu";s:13:"База клиентов";s:13:"engine_mod_id";s:1:"0";s:10:"childNodes";a:2:{i:2;a:3:{s:16:"engine_name_menu";s:10:"Учреждение";s:13:"engine_mod_id";s:1:"0";s:10:"childNodes";a:5:{i:3;a:3:{s:16:"engine_name_menu";s:24:"Создать новое учреждение";s:13:"engine_mod_id";s:1:"1";s:10:"childNodes";a:0:{}}i:4;a:3:{s:16:"engine_name_menu";s:33:"Создать новое учреждение (заявка)";s:13:"engine_mod_id";s:1:"7";s:10:"childNodes";a:0:{}}i:5;a:3:{s:16:"engine_name_menu";s:39:"Просмотр/редактирование базы exht;ltybq";s:13:"engine_mod_id";s:1:"2";s:10:"childNodes";a:0:{}}i:6;a:3:{s:16:"engine_name_menu";s:16:"Удаление из базы";s:13:"engine_mod_id";s:1:"9";s:10:"childNodes";a:0:{}}i:7;a:3:{s:16:"engine_name_menu";s:25:"Удаление из базы (запрос)";s:13:"engine_mod_id";s:1:"8";s:10:"childNodes";a:0:{}}}}i:8;a:3:{s:16:"engine_name_menu";s:15:"Контактное лицо";s:13:"engine_mod_id";s:1:"0";s:10:"childNodes";a:2:{i:9;a:3:{s:16:"engine_name_menu";s:28:"Созать новое контактное лицо";s:13:"engine_mod_id";s:2:"10";s:10:"childNodes";a:0:{}}i:10;a:3:{s:16:"engine_name_menu";s:28:"Просмотр/редактирование базы";s:13:"engine_mod_id";s:2:"12";s:10:"childNodes";a:0:{}}}}}}i:11;a:3:{s:16:"engine_name_menu";s:11:"Мероприятия";s:13:"engine_mod_id";s:1:"0";s:10:"childNodes";a:2:{i:12;a:3:{s:16:"engine_name_menu";s:19:"Планирование визита";s:13:"engine_mod_id";s:2:"18";s:10:"childNodes";a:0:{}}i:13;a:3:{s:16:"engine_name_menu";s:30:"Просмотр страницы планировщика";s:13:"engine_mod_id";s:2:"17";s:10:"childNodes";a:0:{}}}}} 
  
 

PM MAIL   Вверх
-=Ustas=-
Дата 21.8.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



На вопрос "Как перебрать многомерный массив с помошью рекурсии" напрашивается только один ответ - "Только с помощью рекурсии" smile

Ну а если по делу, то :
Код


function view_array( &$array )  // например
{
    foreach ( $array AS $key => $value ) {
        
        if ( is_array( $value ) ) { 
            view_array( $value ); 
        } else {
            echo 'key -> '.$key.', value -> '.$value."\n";
        }
    }
}




--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
GiV
Дата 21.8.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 1
Всего: 9



Либо так
Код

$array = unserialize($array);

function rowPrint($item, $key)
{
    
    echo $key . "->" . $item . "\n";
}

array_walk_recursive($array, 'rowPrint');

PM MAIL WWW ICQ   Вверх
Glip
Дата 22.8.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: нет
Всего: 18



Цитата(-=Ustas=- @  21.8.2007,  21:57 Найти цитируемый пост)
На вопрос "Как перебрать многомерный массив с помошью рекурсии" напрашивается только один ответ - "Только с помощью рекурсии" 


часто рекурсию можно преобразовать Replace Recursion with Iteration



--------------------
user posted image
PM MAIL   Вверх
Mushu
Дата 28.8.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 20.7.2004

Репутация: нет
Всего: -5



Большое спасибо Всем, оч помогло.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1261 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.