powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Перевести array в hash
2 сообщений из 2, страница 1 из 1
Perl: Перевести array в hash
    #37996803
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В результате запроса сервера по JSON получаю массив массивов (@rows = [@row1, @row2, @row3, ..., @rowN]).
Все элементы @rowX состоят из одинакового количества элементов, соответствующих полям запроса (@fields = [id, field1, field2, ..., fieldN]).
Я хочу получить хэш примерно такой структуры:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
{
  {
    row1-id =>
      {
        'id' => row1-id,
        'field1' => row1-field1,
        'field2' => row1-field2,
        ...
      }
  },
  {
    row2-id =>
      {
        'id' => row2-id,
        'field1' => row2-field1,
        'field2' => row2-field2,
        ...
      }
  },
}



Не посоветуете оптимальный код?
Я пока сделал через два вложенных цикла; как сделать через map не соображу.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Perl: Перевести array в hash
    #37996869
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас использую такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
sub array2hash($$)
{
  my $fields = shift;
  my $array = shift;
  my $hash = {};
  $hash->{'meta'} = $fields;
  $hash->{'rows'} = {};
  my @fld = @{$fields};
  foreach my $row (@{$array})
  {
    $hash->{'rows'}->{$row->[0]} = {};
    $hash->{'rows'}->{$row->[0]}->{$fld[$_]} = $row->[$_] foreach (0..$#fld);
  }
  return $hash;
}


Хотелось бы хотя бы внутренний foreach заменить на map.
Еще лучше было бы соединить два массива ($fields и $row) с чередованием, тогда можно было бы просто сделать $hash->{rows}-{id} = [<mixed-array>].
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Перевести array в hash
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]