cgicorner.ch ¦ CGI Hilfe ¦ Knowledge Base ¦ Sortieren nach Feld X    
   http://www.cgicorner.ch

Main Download CGI Hilfe Knowledge Base Links Gaestebuch Witze-Bereich Sitemap Impressum

Sortieren nach Feld X

Wie kann ich einen Array mit mehreren, Trennzeichen getrennten, Datensätzen nach einem beliebigen Feld sortieren?

Beispiel:

@test[0]="Herr;Hans;Muster;Mustergasse 99;9999;Mustershausen;099 999 99 99";
@test[1]="Herr;Fritz;Meier;Teststrasse 78;6786;Testingen;077 777 77 77";
Soll nach Namen (drittes Feld) sortiert werden.

Es muss eine Subroutine geschrieben werden, welcher der komplette String übergeben werden kann und die dann den für die Sortierung relevanten Teil zurückliefert.

In unserem Beispiel sähe die Subroutine etwa so aus:

sub NameSort
  {
  my (@InputData);
  @InputData=split(/;/,@_[0]);
  return @InputData[2];
  }
Das Array kann nun mit folgendem Befehl alphanumerisch sortiert werden:
@test1=sort {&NameSort($a) cmp &NameSort($b)} (@test);

Folgender Code sortiert das Array numerisch:

@test1=sort {&NameSort($a) <=> &NameSort($b)} (@test);

Das Ergebnis wird jeweils in das Array @test1 geschrieben. Hier noch eine allgemein gültige Subroutine, bei der Trennzeichen und Spalte übergeben werden können.

#@test1=sort {&SpaltenSort($a,"Trennzeichen",Spalte) cmp &SpaltenSort($b,";",Spalte)} (@test);
#Spalte beginnt jeweils bei 0
sub SpaltenSort
  {
  my (@InputData);
  @InputData=split(/@_[1]/,@_[0]);
  return @InputData[@_[2]];
  }

Dieser Artikel wurde zugesandt von: Jürg Sommer, knowledge@cgicorner.ch



 
Druckfreundliche Version zum Anfang der Seite
Copyright (c) 2012 by cgicorner.ch
Diese Seite ist ein Teil von http://www.cgicorner.ch
URL dieser Seite: http://www.cgicorner.ch/cgi-bin/kb/kb.cgi?file=sort.kb
Letzte Änderung: 26. März 2002