Heej mensen,
hier: http://www.devdaily.com/perl/edu/qanda/plqa00016/ heb ik gelezen over hoe je een hash op waarde kunt sorteren. Het werkt alleen niet.
Je klikt op een leter dus bijv. a, dan ik haal dus de data van alle ringtones die met a beginnen, en stop die in een hash. (De syntax word dan: dus $TONES{idnummer} = artiest) die wil ik vervolgens op artiest sorteren en uipoepen, maar dat lukt dus nie, aaa komt onder aab te staan
Volgens de bovengenoemde doc, kan je hem met die subs ascending (van a-b) of descending (van b-a), maar met alletwee de subs sorteert ie descending.
en die subs zijn:
hier: http://www.devdaily.com/perl/edu/qanda/plqa00016/ heb ik gelezen over hoe je een hash op waarde kunt sorteren. Het werkt alleen niet.
Je klikt op een leter dus bijv. a, dan ik haal dus de data van alle ringtones die met a beginnen, en stop die in een hash. (De syntax word dan: dus $TONES{idnummer} = artiest) die wil ik vervolgens op artiest sorteren en uipoepen, maar dat lukt dus nie, aaa komt onder aab te staan
Volgens de bovengenoemde doc, kan je hem met die subs ascending (van a-b) of descending (van b-a), maar met alletwee de subs sorteert ie descending.
code:
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
29
| elsif ($FORM{'sort'} eq "artist") {
foreach $line(@lines) {
chomp($line);
($ringid,$cat,$artist,$title,$rtttl,$hits) = split(/\|/,$line);
$artist = lc($artist);
@letters = split(//,$artist);
if ($FORM{'letter'} eq $letters[0]){
$TONES{$ringid} = $artist;
}
}
foreach $key (sort hashValueDescendingNum (keys(%TONES))) {
foreach $line(@lines) {
chomp($line);
($ringid,$cat,$artist,$title,$rtttl,$hits) = split(/\|/,$line);
if ($key eq $ringid){
print qq~
<Tr bgcolor=#FFFFFF>
<Td>$artist</td>
<Td>$title</td>
<Td>[img]"/listen.gif"></td>
[/img]
~;
}
}
# print "Artiest: $TONES{$key}, id: $key\n";
} |
en die subs zijn:
code:
1
2
3
4
5
6
| sub hashValueDescendingNum {
$TONES{$b} <=> $TONES{$a};
}
sub hashValueAscendingNum {
$TONES{$a} <=> $TONES{$b};
} |