Thread Größten Wert in mehrstufigem Hash finden (20 answers)
Opened by Stefan_S at 2018-03-15 09:46

rosti
 2018-03-15 19:22
#188165 #188165
User since
2011-03-19
3471 Artikel
BenutzerIn
[Homepage]
user image
Ke Problem kömma alles machen ;)

Also wenn Du nur nach Bestand sortieren tätest

Code (perl): (dl )
1
2
3
4
5
6
7
8
# und nun das Array sortieren
@slice = 
    map{$_->[0]}
#    sort{$a->[2] <=> $b->[2]} # nach Artikel aufsteigend
#    sort{$a->[3] <=> $b->[3]} # nach Charge aufsteigend
    sort{$b->[4] <=> $a->[4]} # nach Bestand absteigend
    map{[$_, $_->{TIME}, $_->{ANR}, $_->{CNR}, $_->{bestand}]} @slice;
    #    0        1         2          3           4


Sieht die Ausgabe so aus:

Code (perl): (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
44
$VAR1 = [
          {
            'ANR' => '2111',
            'CNR' => '10',
            'TIME' => '1521033526',
            'artikel_nr' => 'AGI15030',
            'bestand' => '3150.00',
            'charge' => 'RSG'
          },
          {
            'ANR' => '2111',
            'CNR' => '10',
            'TIME' => '1521033260',
            'artikel_nr' => 'AGI15030',
            'bestand' => '3120.00',
            'charge' => 'RSG'
          },
          {
            'ANR' => '2111',
            'CNR' => '10',
            'TIME' => '1521033630',
            'artikel_nr' => 'AGI15030',
            'bestand' => '3110.00',
            'charge' => 'RSG'
          },
          {
            'ANR' => '2111',
            'CNR' => '3',
            'TIME' => '1521033260',
            'artikel_nr' => 'AGI15030',
            'bestand' => '1450.00',
            'charge' => 'Event Management'
          },
          {
            'ANR' => '2111',
            'CNR' => '3',
            'TIME' => '1521033630',
            'artikel_nr' => 'AGI15030',
            'bestand' => '1100.00',
            'charge' => 'Event Management'
          }
        ];

Prozess erfolgreich beendet.


Es muss ein Array sein, weil Hashes immer unsortiert sind. Mein Code erstellt ein solches Array, was Du natürlich auch so aus der Datenbank holen kannst. In Fakt erzeugt mein Code für jeden Artikel quasi ein Objekt und das Array ist ein Array mit diesem Objekten.


Sortiert wird übrigens hier mittels der Schwartzschen Transformation. Wichtig ist, daß Du das Prinzip verstehst. Was mein Code macht, heißt im Fachjargon Linearisierung (aus dem Hash ein Array erstellen).

;)
Last edited: 2018-03-15 19:34:27 +0100 (CET)

View full thread Größten Wert in mehrstufigem Hash finden