Christian Kruse: Wie Sortiert man ein Array nach einem bestimmten darin befindlichen Wert?

Beitrag lesen

Hi,

Wert1,Wert2,Zahlenwert
Wert1,Wert2,Zahlenwert
Wert1,Wert2,Zahlenwert
Wert1,Wert2,Zahlenwert

[...]

Wert1,Wert2,125
Wert1,Wert2,123
wert1,Wert3,124

[...]

Wert1,Wert2,123
Wert1,Wert2,124
wert1,Wert3,125

[...]

Meinetwegen, das Feld sieht so aus:
@feld = ('bla1,bla,1','bla2,bla,4','bla3,bla,3','bla4,bla,2');

Dann gehe jedes Feld durch:

for($i=0;$i<=$#feld;$i++)
{

splitte die Werte (damit du die Nummern hast)

(undef,undef,$nr1) = split(/,/,$feld[$i]);

gehe nochmal jedes Feld durch

for($j=0;$j<=$#feld;$j++)
  {
  (undef,undef,$nr2) = split(/,/,$feld[$j]);

# und überprüfe, ob es ein Feld mit einem kleineren Wert gibt
  if($nr1 < $nr2)
   {
   # wenn ja, dann vertausche die beiden Felder
   ($feld[$i],$feld[$j]) = swap($feld[$i],$feld[$j]);
   }
  }
}

ausgeben

foreach (@feld)
{
print $_."\n";
}

vertauschen

sub swap($$)
{
$val1 = shift;
$val2 = shift;

return ($val2,$val1);
}

mfg
CK1