![]() |
|
||||||||||
|
|||||
|
значения моего хэша есть цифры, мне нужно отсортировать их и вывести на экран (или куда ещё там) значения по возрастанию. Я воспользовался функцией sort в цыкле, но значения хэша сортируются как набор строк, т.е. выводим
1,22,5,9 (по первым "буквам" строк), помогите!! |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Если они сортируются как строки -- значит, они и есть строки. Сделай их числами.
![]() Исходник, опять же, показывай. ![]()
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
ну да я об этом и говорю что они строки, но формировал то я их с помощью
for(@data){ $hash{$_}++; } т.е. в хешь заносились явно числа, ведь строки же не могут увеличиться оператором ++ дак как их сделать числами? Я пытался по старинке методом пузырька, но по хешу циклы с заданной позиции гонять не очень удобно, подскажите плизз.. |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Покажи полный код.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
код следующий: хеш формируется как было указано ранее, а родительский масив содержит всякую дребедень из файла, которую нужно перечесть, сложить в кэш и упорядочить её вывод
%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";} } } |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
sort { $a <=> $b } values %hash
Ты использовал ту форму sort, которая сортирует значения как строки. ![]()
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
спасибо, всё заработало, УРА!!!
|
![]() |
Часовой пояс GMT +4, время: 00:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|