habe da ein 2 dimensionales array, ähnlich eine db-tabelle.
wie kann man mit einfachen mitteln dieses array beliebig sortieren lassen?
in php gibts ja schon verschiedene funktionen für das sortieren von arrays, aber für meinen zweck eignet sich wahrscheinlich nur multisort.
in diesem beispiel soll wie folgt sortiert werden: erst nach spalte1 aufsteigend und dann nach spalte2 absteigend..
aber wie gesagt, es sortiert nicht so wie ich das mir dachte.
Das geht auch so schon rein logisch nicht.
Du versucht hier nämlich, Werte einer Ebene für einen Key anders zu sortieren, wie für einen anderen Key der selben Ebene.
Entweder kann man eine Ebene komplett sortieren oder nicht, aber keine unterschiedlichen Keys der selben Ebene nach anderen Regeln.
Was ist denn auf der 2. Ebene an Daten vorhanden, bzw. was verbirgt sich denn hinter Key 1 und Key 2 auf der 2. Ebene?
Mühsam, das so auseinanderzunehmen, besser wäre da schon an der Quelle zu arbeiten.
Wo kommen denn die Daten her?
Aus einer Datenbanktabelle?
Wenn Du Daten in eine Array zusammenführst und die Ebenen unsortiert vorliegen, kann man die ja auch vorher sortieren und dann daraus das Array aufbauen.
array_multisort kann jedenfalls (eben aus Logikgründen) nur das Array in Gänze, aber nicht auf Ebenen sortieren.
Das geht IMO auch mit keinem der anderen Sortierbefehle.
Karsten Ude
-={ Das Mädchen für alles }=- Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
$daten = array(array(),array()); // 2dimensionales array anlegen
$row = 1; // Anzahl der Arrays
$handle = fopen ($filename,"r"); // Datei zum Lesen öffnen
while ($data = fgetcsv ($handle, 1000, "§")) { // Daten werden aus der Datei
// in ein Array $data gelesen
$anzspalten = count ($data); // Felder im Array $data werden gezählt
if ($row == 1) {
$bez = $data;//Spaltenbezeichnung
}
else {
for ($c=0; $c < $anzspalten; $c++) { //Felder des Arrays in einer zeile ausgeben
$daten[$row-2][$c] = $data[$c]; //Daten-Array für Weiterverarbeitung füllen
}//for
}//if
$row++;
}
fclose ($handle);
die spaltenbezeichnung steht in der datei in der ersten zeile. ich "lagere" es in ein anderes array ($bez) aus, damit beim sortieren diese werte nicht die sortierung verfälschen.
Karsten Ude
-={ Das Mädchen für alles }=- Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
array_multisort bedeutet eben, daß alle Arrays mit gleichen Keys in der angegebene Reihenfolge nach den Inhalten sortiert werden.
So werden eben die Inhalte nach (1. Beispiel) Namen und alle anderen Arrays mit ihren Inhalten gemäß den gleichlautenden Keys (hier $i) mit sortiert.
So wird dann ein Schuh draus...
Karsten Ude
-={ Das Mädchen für alles }=- Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
danke dir (wie so oft) für den spitzen hinweis!! hab nun alles wie du beschrieben hast in einzelne arrays gepackt. nun funktioniert auch das sortieren mit array_multisort kinderleicht
Man muss es eben nur verstehen, wie diese Sortierung funktioniert, dann ist der Rest einfach.
Schön, wenn es nun bei Dir die gewünschten Ergebnisse liefert.
Karsten Ude
-={ Das Mädchen für alles }=- Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!