Hello,
wenn Du immer nur genau nach einer Spalte sortieren willst, ist das einfacher zu lösen:
ich habe eine txt-Datei mit folgendem Aufbau:
Nr|Titel|Inhalt|Genre|FSK
Nr|Titel|Inhalt|Genre|FSK
Nr|Titel|Inhalt|Genre|FSKWenn ich nachfolgende Array-Struktur hinbekäme...
$Film[0]["Nr"] = 0;
$Film[0]["Titel"] = "ORIGINAL SIN";
$Film[0]["Inhalt"] = "Im Kuba des ausgehenden 19. Jahrhunderts...";
$Film[0]["Genre"] = "Drama/Thriller";
$Film[0]["FSK"] = 16;
Mach stattdessen eine Struktur
$_film['nr'][$i]
$_film['titel'][$i]
$_film['inhalt'][$i]
$_film['genre'][$i]
$_film['fsk'][$i]
Die einzelnen Felder eines Datansatzes korrespondiern dann immer übner den Index des Datensatzes.
Der Vorteil ist aber, dass jede Spalte der Tabelle in einem eigenen Array steht und man so nach jeder Spalte mit den einfachen Array-Sortierungsfunktionen von PHP sortieren kann.
Mann muss das Gesamtkunstwerk dann nur nach der sortierten Spalte als Leitspalte anzeigen lassen
Du musst das Array nur nach $sortcol sortieren lassen z.B. mit natsort($_film[$sortcol])
$sortcol = 'genre';
natsort($_film[$sortcol]);
und dann kannst Du es sortiert ausgeben.
$zeile = "<table>\n";
foreach($_film[$sortcol] als $key => $val)
{
$zeile .= " <tr>\n";
$zeile .= " <td>". $_film['nr'][$key] . "</td>\n";
$zeile .= " <td>". $_film['titel'][$key] . "</td>\n";
$zeile .= " <td>". $_film['inhalt'][$key] . "</td>\n";
$zeile .= " <td>". $_film['genre'][$key] . "</td>\n";
$zeile .= " <td>". $_film['fsk][$key] . "</td>\n";
$zeile .= " </tr>\n";
}
$zeile .= "</table>\n";
Das schöne daran ist, dass Du alle (einfachen) Sortierungen gleichzeitig vorhalten kannst, was sich natürlich nur lohnt, wenn das Array entweder in der Session (oder sonstwo permanent) geparkt wird oder Du es in einem Scriptdurchlauf in den unterschiedlichen Sortierungen benötigst...
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.
Nur selber lernen macht schlau