![]() |
сортировка хэша
значения моего хэша есть цифры, мне нужно отсортировать их и вывести на экран (или куда ещё там) значения по возрастанию. Я воспользовался функцией sort в цыкле, но значения хэша сортируются как набор строк, т.е. выводим
1,22,5,9 (по первым "буквам" строк), помогите!! |
Если они сортируются как строки -- значит, они и есть строки. Сделай их числами. :)
Исходник, опять же, показывай. :) |
ну да я об этом и говорю что они строки, но формировал то я их с помощью
for(@data){ $hash{$_}++; } т.е. в хешь заносились явно числа, ведь строки же не могут увеличиться оператором ++ дак как их сделать числами? Я пытался по старинке методом пузырька, но по хешу циклы с заданной позиции гонять не очень удобно, подскажите плизз.. |
Покажи полный код.
|
код следующий: хеш формируется как было указано ранее, а родительский масив содержит всякую дребедень из файла, которую нужно перечесть, сложить в кэш и упорядочить её вывод
%hash=('a',1,'b',44,'c',3,'d',4,'e',5,'f',6); for $y(sort values %hash){ while(($k,$v)=each %hash){ if($y eq $v){print $k."- $v\n";} } } |
sort { $a <=> $b } values %hash
Ты использовал ту форму sort, которая сортирует значения как строки. :) |
спасибо, всё заработало, УРА!!!
|
| Часовой пояс GMT +4, время: 00:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.