Автор Тема: Сортировка массива хэшей  (Прочитано 3558 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Hob

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сортировка массива хэшей
« : 01 Декабря 2006, 19:16:00 »
Здравствуйте,

Есть массив такого вида:

push @users, {\'ID\'=>$userid, \'USER\'=>$usernick, \'STATUS\'=>$status, \'N\'=>$n};

Создал функцию:

sub sortmh {
 my ($mas,$key) = @_;
 $mas = [ sort {$a->{$key}<=>$b->{$key}} @$mas ];
}

sortmh(\\@users, \'N\');

Не подскажете, почему он неправильно сортирует?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Сортировка массива хэшей
« Ответ #1 : 01 Декабря 2006, 19:25:05 »
Что значит неправильно? Что в $n? Если цифры - то правильно.
The documentations is your friend

Оффлайн Hob

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сортировка массива хэшей
« Ответ #2 : 01 Декабря 2006, 21:23:05 »
NeoNox
Цифры.

У меня потом заполняется js массив значениями. Я предполагаю, что он должен отсортироваться при заполнении, а он так и остаётся 2 1 4 6 (по N)

var allUsers = new Array([% FOREACH U = USERS %][% U.ID %],\'[% U.USER %]\',\'[% U.STATUS %]\',[% U.N %],[% END %]0);

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Сортировка массива хэшей
« Ответ #3 : 01 Декабря 2006, 22:23:10 »
А перл тут при чем? Ищите проблему в другом месте.
Не умеете локализовать проблему? Я помогу:
#!/usr/bin/perl

use Data::Dumper;

for (
40..49)
{
       
push @users, {\'ID\'=>\'userid\'.$_ , \'USER\'=>"usernick".$_, \'STATUS\'=>"status".$_, \'N\'=>$_};
}


for (1..3)
{
       push @users, {\'ID\'=>\'userid\'.$_ , \'USER\'=>"usernick".$_, \'STATUS\'=>"status".$_, \'N\'=>$_};
}



sub sortmh {
       my ($mas,$key) = @_;
       print Dumper(@$mas);
       print "========================================\\n";
       $mas = [ sort {$a->{$key}<=>$b->{$key}} @$mas ];
       print Dumper(@$mas);
}

sortmh(\\@users, \'N\');



Цитировать
$VAR1 = {
         \'ID\' => \'userid40\',
         \'N\' => 40,
         \'STATUS\' => \'status40\',
         \'USER\' => \'usernick40\'
       };
$VAR2 = {
         \'ID\' => \'userid41\',
         \'N\' => 41,
         \'STATUS\' => \'status41\',
         \'USER\' => \'usernick41\'
       };
$VAR3 = {
         \'ID\' => \'userid42\',
         \'N\' => 42,
         \'STATUS\' => \'status42\',
         \'USER\' => \'usernick42\'
       };
$VAR4 = {
         \'ID\' => \'userid43\',
         \'N\' => 43,
         \'STATUS\' => \'status43\',
         \'USER\' => \'usernick43\'
       };
$VAR5 = {
         \'ID\' => \'userid44\',
         \'N\' => 44,
         \'STATUS\' => \'status44\',
         \'USER\' => \'usernick44\'
       };
$VAR6 = {
         \'ID\' => \'userid45\',
         \'N\' => 45,
         \'STATUS\' => \'status45\',
         \'USER\' => \'usernick45\'
       };
$VAR7 = {
         \'ID\' => \'userid46\',
         \'N\' => 46,
         \'STATUS\' => \'status46\',
         \'USER\' => \'usernick46\'
       };
$VAR8 = {
         \'ID\' => \'userid47\',
         \'N\' => 47,
         \'STATUS\' => \'status47\',
         \'USER\' => \'usernick47\'
       };
$VAR9 = {
         \'ID\' => \'userid48\',
         \'N\' => 48,
         \'STATUS\' => \'status48\',
         \'USER\' => \'usernick48\'
       };
$VAR10 = {
          \'ID\' => \'userid49\',
          \'N\' => 49,
          \'STATUS\' => \'status49\',
          \'USER\' => \'usernick49\'
        };
$VAR11 = {
          \'ID\' => \'userid1\',
          \'N\' => 1,
          \'STATUS\' => \'status1\',
          \'USER\' => \'usernick1\'
        };
$VAR12 = {
          \'ID\' => \'userid2\',
          \'N\' => 2,
          \'STATUS\' => \'status2\',
          \'USER\' => \'usernick2\'
        };
$VAR13 = {
          \'ID\' => \'userid3\',
          \'N\' => 3,
          \'STATUS\' => \'status3\',
          \'USER\' => \'usernick3\'
        };
========================================
$VAR1 = {
         \'ID\' => \'userid1\',
         \'N\' => 1,
         \'STATUS\' => \'status1\',
         \'USER\' => \'usernick1\'
       };
$VAR2 = {
         \'ID\' => \'userid2\',
         \'N\' => 2,
         \'STATUS\' => \'status2\',
         \'USER\' => \'usernick2\'
       };
$VAR3 = {
         \'ID\' => \'userid3\',
         \'N\' => 3,
         \'STATUS\' => \'status3\',
         \'USER\' => \'usernick3\'
       };
$VAR4 = {
         \'ID\' => \'userid40\',
         \'N\' => 40,
         \'STATUS\' => \'status40\',
         \'USER\' => \'usernick40\'
       };
$VAR5 = {
         \'ID\' => \'userid41\',
         \'N\' => 41,
         \'STATUS\' => \'status41\',
         \'USER\' => \'usernick41\'
       };
$VAR6 = {
         \'ID\' => \'userid42\',
         \'N\' => 42,
         \'STATUS\' => \'status42\',
         \'USER\' => \'usernick42\'
       };
$VAR7 = {
         \'ID\' => \'userid43\',
         \'N\' => 43,
         \'STATUS\' => \'status43\',
         \'USER\' => \'usernick43\'
       };
$VAR8 = {
         \'ID\' => \'userid44\',
         \'N\' => 44,
         \'STATUS\' => \'status44\',
         \'USER\' => \'usernick44\'
       };
$VAR9 = {
         \'ID\' => \'userid45\',
         \'N\' => 45,
         \'STATUS\' => \'status45\',
         \'USER\' => \'usernick45\'
       };
$VAR10 = {
          \'ID\' => \'userid46\',
          \'N\' => 46,
          \'STATUS\' => \'status46\',
          \'USER\' => \'usernick46\'
        };
$VAR11 = {
          \'ID\' => \'userid47\',
          \'N\' => 47,
          \'STATUS\' => \'status47\',
          \'USER\' => \'usernick47\'
        };
$VAR12 = {
          \'ID\' => \'userid48\',
          \'N\' => 48,
          \'STATUS\' => \'status48\',
          \'USER\' => \'usernick48\'
        };
$VAR13 = {
          \'ID\' => \'userid49\',
          \'N\' => 49,
          \'STATUS\' => \'status49\',
          \'USER\' => \'usernick49\'
        };


Ищите в темплейте что не так.
« Последнее редактирование: 01 Декабря 2006, 23:23:04 от NeoNox »
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28