perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




11.02.2012 / 20:21

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragzweidimensionale Arrays sortieren
Seitenanfang
Hi Leute,

ich habe eine CSV-Datei in ein 2-dimensionales Array ausgelesen, die Daten liegen in der Form vor:
$array[$zeile][$spalte]

Nun muss ich das komplette Array nach bestimmten Spalten sortieren. Hat jemand einen guten Vorschlag wie das am einfachsten geht?

Eine (MySQL-)Datenbank steht leider nicht zur Verfügung. Ich dachte alternativ schon daran, das DBI::CSV-Modul zu verwenden, aber vielleicht gibt es dafür ja noch eine andere Lösung....?

Greetz,
Wini

Datum: 06.03.2006-21:43

Beitragre: zweidimensionale Arrays sortieren
Seitenanfang
So bringst du den Inhalt der CSV Datei schonmal in eine
ungünstige Ausgangs-Reihenfolge zum Sortieren.

Angenommen deine CSV-DATEI sieht so aus:

erste spalte,zweite spalte,dritte spalte
aaa,bbb,ccc
ccc,aaa,bbb
bbb,ccc,aaa

Lies die CSV-Datei so ein dass die Daten hinterher in dieser
Form vorliegen :

@array = (
["erste spalte", "zweite spalte", "dritte spalte"],
["aaa","bbb","ccc"],
["ccc","aaa","bbb"],
["bbb","ccc","aaa"]
);

Jetzt kannst du die Kopfzeile entfernen und nach einer bestimmten
Spalte sortieren, zum Beispiel alphabetisch nach der ersten (0) :

foreach( sort {$a->[0] cmp $b->[0]} @array) {
print join " ", @{$_},"\n";
}

$a und $b sind in der sort-Funktion Aliase für die zu vergleichenden Elemente,
Also kannst du auf sie zugreifen, wie du auf die Elemente in deinem Array
zugreifen würdest.So wie du das von $_ kennst.

Siehe:
http://perldoc.perl.org/functions/sort.html

Datum: 06.03.2006-23:55

-






-
-