Zeidimensionales Array nach zwei Spalten sortieren
remuen
- php
0 Axel Richter0 remuen
Hallo
Ich möchte gerne ein zweidimensionales Array nach mehreren Spalten sortieren. Ich lese ein Textfile mit beliebig vielen "Records" (Zeilen) mit folgendem Aufbau unter Benutzung von explode(";",$test)in ein Array ein, so dass sich ein zweidimensionales Array ergibt:
Name;Vorname;Runden;Totalpunkte;Bestwert;Datum
Das Sortieren nach nur einer beliebigen Spalte (z.B. nach Totalpunkte) ist soweit problemlos:
function compare($x, $y)
{
if ($x[3] == $y[3]) return 0;
else
if ($x[3] < $y[3]) return -1;
else return 1;
};
usort ($array, 'compare');
Wie aber kann ich am besten/einfachsten die Sortierung nach zwei Spalten vornehmen, also z.B. zuerst nach Totalpunkte und bei Gleichheit von zwei Werten zusätzlich nach Datum oder Name (vergleichbar mit "ORDER BY Totalpunkte, Datum" resp. "ORDER BY Totalpunkte, Datum" )
Wer hat mir einen Tipp oder gar die Lösung dazu?
Vielen Dank im voraus
René
Hallo
Name;Vorname;Runden;Totalpunkte;Bestwert;Datum
Das Sortieren nach nur einer beliebigen Spalte (z.B. nach Totalpunkte) ist soweit problemlos:Wie aber kann ich am besten/einfachsten die Sortierung nach zwei Spalten vornehmen, also z.B. zuerst nach Totalpunkte und bei Gleichheit von zwei Werten zusätzlich nach Datum oder Name
Wo ist das Problem?
function compare($x, $y)
{
if ($x[3] == $y[3]) return 0;
^Hier weißt Du, dass die Werte für Totalpunkte gleich sind. Nun gibst Du nicht 0 zurück, sondern vergleichst weiter.
else
if ($x[3] < $y[3]) return -1;
else return 1;
};
usort ($array, 'compare');
viele Grüße
Axel
Hallo Axel
Wo ist das Problem?
Mit an Sicherheit grenzender Wahrscheinlichkeit bei mir ... *grins*
Offensichtlich weiss ich von SQL-Datenbanken mehr als von Arrays und habe mich vorher wohl zu lange mit array_multisort abgemüht und dabei völlig übersehen, dass des Rätsels Lösung so nahe liegt.
Vielen Dank!
René