Thread Sortierung: mal wieder... (19 answers)
Opened by Robby at 2004-02-19 09:49

Robby
 2004-02-23 09:29
#80219 #80219
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
Jetzt hätte ich aber nochmal eine Frage bezüglich Sortierung nach dem Alphabet und nach Zahlen (cmp und <=>)....

Nach mehreren Spalten sortieren kann ich ja jetzt siehe Beispiel:

Code: (dl )
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use strict;

my $arrayVar;
$arrayVar->{"0,0"} = "a";
$arrayVar->{"1,0"} = "a";
$arrayVar->{"2,0"} = "a";
$arrayVar->{"3,0"} = "a";
$arrayVar->{"4,0"} = "a";

$arrayVar->{"0,1"} = "3";
$arrayVar->{"1,1"} = "2";
$arrayVar->{"2,1"} = "2";
$arrayVar->{"3,1"} = "3";
$arrayVar->{"4,1"} = "3";

$arrayVar->{"0,2"} = "aaa";
$arrayVar->{"1,2"} = "bbb";
$arrayVar->{"2,2"} = "aaa";
$arrayVar->{"3,2"} = "bbb";
$arrayVar->{"4,2"} = "bbb";

my @data;

# $arrayVar umwandeln in 2-dim. Array:
for (keys %$arrayVar) {
   my ($y, $x) = split /,/;
   $data[$y][$x] = $arrayVar->{$_};
}

# Array sortieren nach $spalte:
my @sorteddata = sort { $a->[0] cmp $b->[0] || $a->[1] <=> $b->[1] ||$a->[2] cmp $b->[2] } @data;

# $arrayVar neu aufbauen mit @sorteddata:
$arrayVar = {};
for my $y (0 .. $#sorteddata) {
   for my $x (0 .. $#{$sorteddata[$y]}) {
       $arrayVar->{"$y,$x"} = $sorteddata[$y][$x];
   }
}

# testen:
use Data::Dumper;
print Dumper \@sorteddata;


Hier wird nach
- Spalte 1 Alphanumerisch
- Spalte 2 Numerisch
- Spalte 3 Alphanumerisch
sortiert.

Wie kann ich das dynamisch machen, sprich wenn Zahlen
in der Splate sind nach Zahlen sortieren, ansonsten alphanumerisch???

[EDIT] Natürlich sollte das ganze mit beliebig vielen Spalten funktionieren :D\n\n

<!--EDIT|Robby|1077522236-->
Kaum macht man es richtig - schon funktioniert es!

View full thread Sortierung: mal wieder...