Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обьединить все ветки хеша и создать дерево 
:(
    Опции темы
AlexanderI
Дата 13.2.2015, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 3



Здравствуйте. Помогите правильно обьединить и создать хэш из другого хеша.

Есть такая структура (сделана через dump::dumper):
Каждый лист этого дерева расписан от корня.

Код


'$VAR1'=>[
        {
        'name'=>"Магазин",
        'val'=>"Универсам"                
        'sub'=>    [
                {
                 'name'=>"Товаров",
                 'val'=>"200"                
                 'sub'=>[
                        {
                        'name'=>"Сотрудников",
                        'val'=>"5"                
                        }    
                        ]
                }
                ]                        
        },
        {
        'name'=>"Магазин",
        'val'=>"Радуга"                
        'sub'=>    [
                {
                 'name'=>"Товаров",
                 'val'=>"300"                
                 'sub'=>[
                        {
                        'name'=>"Сотрудников",
                        'val'=>"10"                
                        }    
                        ]
                }
                ]                        
        },    
        {
        'name'=>"Ресторан",
        'val'=>"Ресторан 1"                
        'sub'=>    [
                {
                 'name'=>"Мест",
                 'val'=>"20"                
                 'sub'=>[
                        {
                        'name'=>"Сотрудников",
                        'val'=>"60"                
                        }    
                        ]
                }
                ]                        
        },
        {
        'name'=>"Ресторан",
        'val'=>"Ресторан 2"                
        'sub'=>    [
                {
                 'name'=>"Столов",
                 'val'=>"50"                
                 'sub'=>[
                        {
                        'name'=>"Сотрудников",
                        'val'=>"70"                
                        }    
                        ]
                }
                ]                        
        }                
        ]



Нужно совместить все уровни, чтобы не было повторений, верхних уровней. Чтобы получилось одно единственное дерево. Например имеется 2 одинаковых дерева "Магазин", всё что одинаковое обьединяется в массив.

Должно получиться что-то подобное:

[{
'name' => "Магазин",
'sub'  => [{
           'name' =>  'Универсам',
                     'sub' =>[{
                      .....
                     }]
            },
            {
           'name' =>  'Радуга',
                     'sub' =>[{
                   .......
                     }]
            },            
            ]
}]    


Это сообщение отредактировал(а) AlexanderI - 13.2.2015, 13:57
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
arto
Дата 13.2.2015, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



сделайте сначала hash по name
PM MAIL ICQ   Вверх
AlexanderI
Дата 13.2.2015, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 3



arto,  никак не могу придумать как.
--------------------
Магазин детских игрушек  | Авто ВАЗ
PM MAIL   Вверх
arto
Дата 16.2.2015, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my $name = delete $_->{'name'};
$_->{'name'} = delete $_->{'val'};
push @{ $hh->{ $name } }, $_;

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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