Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Perl

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 17.06.2002, 15:17
Sergey VG вне форума Посмотреть профиль Отправить личное сообщение для Sergey VG Найти все сообщения от Sergey VG
  № 1  
Sergey VG

Регистрация: May 2000
Сообщений: 14
По умолчанию Сортировка массива (сложная)

Пипл как отсортировать массив:
@massiv
если каждая строка представлена как "$id|$name|$hana|$info"
необходимо отсортировать по второму полю $name.

Старый 17.06.2002, 15:36
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 2  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
sort {split('|',$a)[1]<=>split('|',$b)[1]} @massiv
__________________
Two beer or not two beer?...

Старый 17.06.2002, 16:29
Sergey VG вне форума Посмотреть профиль Отправить личное сообщение для Sergey VG Найти все сообщения от Sergey VG
  № 3  
Sergey VG

Регистрация: May 2000
Сообщений: 14
либо я чайник либо скрипт не корректный .... пробовал по разному:
@massiv=sort {split('|',$a)[6]<=>split('|',$b)[6];} @massiv;
@massiv=sort {split('|',$a)[6]<=>split('|',$b)[6]} @massiv;

ругается на [] скобки.

Старый 17.06.2002, 17:16
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 4  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Сорри, я не проверял - просто давал общую идею решения проблемы. По-красивому (сортировка по любому полю) можно сделать так:
Код:
sub sortfunc {
  my ($a,$b,$i) = @_;
  my @am = split(/\|/,$a);
  my @bm = split(/\|/,$b);
  if ($am[$i] lt $bm[$i]) {
    return -1;
  } elsif ($am[$i] gt $bm[$i]) {
    return 1;
  } else {
    return 0;
  }
}

.................
sort {&sortfunc($a,$b,1)} @massiv
.................
Где 1 - номер поля по которому сортируем (начиная естессно с нуля).
__________________
Two beer or not two beer?...

Создать новую тему   Часовой пояс GMT +4, время: 05:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.