Mehrdimensionales Array nach 2. Indizes sortieren

Hallo Leute!

Ich denke der Thread-Titel sagt alles. Jetzt werdet ihr sicher sagen, schonwieder ein Kerl der nicht sortieren kann. Aber ich denke mein Problem hatte so noch niemand, zumindest was ich gelesen habe.


Ich habe folgendes Array:
PHP:
1. Fahrer
$ranking[1][1]=2123 // Fahrer ID aus MySQL
$ranking[1][2]=83 // erreichte Punktzahl
-----------------------------------------------------------------------
2. Fahrer
$ranking[2][1]=663 // Fahrer ID aus MySQL
$ranking[2][2]=103 // erreichte Punktzahl
-----------------------------------------------------------------------
3. Fahrer
$ranking[3][1]=734 // Fahrer ID aus MySQL
$ranking[3][2]=13 // erreichte Punktzahl
Ich möchte eine Art Highscore Liste erstellen nach der 2. Indizes, dass das Ergebnis dann so aussehen würde...

PHP:
2. Fahrer
$ranking[1][1]=663 // Fahrer ID aus MySQL
$ranking[1][2]=103 // erreichte Punktzahl
-----------------------------------------------------------------------
1. Fahrer
$ranking[2][1]=2123 // Fahrer ID aus MySQL
$ranking[2][2]=83 // erreichte Punktzahl
-----------------------------------------------------------------------
3. Fahrer
$ranking[3][1]=734 // Fahrer ID aus MySQL
$ranking[3][2]=13 // erreichte Punktzahl
Die ganzen sort Funktionen inkl. array_multisort scheinen da ja nicht zu funktionieren?
Ich werde das ganze wohl über eine Funktion regeln müssen, aber ich weiß gar nicht wie ich da ansetzen soll? ( 1. Idee => Eine Schleife, die pro Durchlauf immer das größte Wertepaar rauspickt und in ein neues Array packen!).

P.S: Ich kann das ganze nicht aus MySQL heraus sortieren, da es die Werte so nicht gespeichert gibt.


für Hilfe wäre ich echt dankbar!

Grüße
Hockeyfan
 
asort oder arsort funktioniert wenn du dir ein neues array machst:
PHP:
$keys = array_keys($ranking);
foreach ($keys as $i)
{
  $tmp[ $ranking[$i][1] ] = $tmp[ $ranking[$i][2] ];
}

Das neue Array $tmp kann man richtig schön sortieren und behält auch die ID dabei.

Hoffe das genügt deinen Erwartungen.

Noch eine Frage: Wenn die Fahrer-ID aus mysql kommt, woher kommen dann die Punkte?
 
Hi,

mit [phpf]usort[/phpf] kannst Du das kurz und schmerzlos lösen.

LG

Nachtrag:

Hockeyfan4444 hat gesagt.:
Ich kann das ganze nicht aus MySQL heraus sortieren, da es die Werte so nicht gespeichert gibt.

Du kannst aber mit SQL auch Spaltenwerte summieren. Wenn Du uns verrätst, wie Deine Tabellen aussehen und wie Du die Daten ausliest, finden wir vielleicht einen besseren Weg.

@Zodiac: bischen kompliziert, warum sträuben sich alle so gegen usort()...
PHP:
usort($ranking, create_function('$a, $b', 'return $a[2] <= $b[2];'));
 
Zuletzt bearbeitet:
Zurück