assoziatives array sortieren
mamue
- php
liebes forum,
habe folgendes problem, das ich mit selfphp nicht lösen konnte:
$cc = mysql_query($query_cc, $verbindung) or die(mysql_error());
$row_cc = mysql_fetch_assoc($cc);
im (assoziativen) array $row_cc sind nun alle zeilen der gefundenen datensätze mit ihren spalten enthalten; wie kann ich es anstellen, dass ich das array möglichst einfach (ohne eine funktion zu programmieren) nach einer ganz bestimmten spalte sortieren kann? bei den diversen sort-befehlen bin ich nicht fündig geworden ...
danke für jede hilfestellung!
mfg
mamue
Hallo mamue,
habe folgendes problem, das ich mit selfphp nicht lösen konnte:
Das passiert häufiger, ich verweise lieber aufs Manual (http://php3.de/manual/de/) als auf SELFPHP.
$cc = mysql_query($query_cc, $verbindung) or die(mysql_error());
$row_cc = mysql_fetch_assoc($cc);im (assoziativen) array $row_cc sind nun alle zeilen der gefundenen datensätze mit ihren spalten enthalten;
Wie das? In $row_cc ist die *erste* Zeile der gefundenen Datensätze oder false, wenn keine Datensätze gefunden worden sind. Du musst Die Datensätze in einer Schleife einlesen:
$rows = array ();
while (($row_cc = mysql_fetch_assoc($cc))) {
$rows[] = $row_cc;
}
Deine Aufgabenstellung ist aber etwas komplexer. Es bietet sich auf jeden Fall array_multisort an.
Zitat aus: http://php3.de/manual/en/function.array-multisort.php:
-------------------------------------------------------------------------------------------------
If you have an array that contains output from a SQL SELECT statment and you want to sort the array on a column, you have to create a separate array containing the values of that column like so:
//Get table output into $rows array
$result = mysql_query("SELECT field1, field2 from table");
while ($rows[] = mysql_fetch_array($result)) {}
//Sort on field2
foreach ($rows as $val) {
$sortarray[] = $val['field2'];
}
array_multisort($rows, $sortarray);
//Now, $rows is sorted on field2
If anyone knows an easier way to do this, please let us know!
-------------------------------------------------------------------------------------------------
Ach ja, nur mal so nebenbei: Warum verwendest Du nicht die ORDER BY-Klausel in SQL? MySQL ist im Sortierten schneller als PHP...
Grüße,
Christian
hallo christian,
Ach ja, nur mal so nebenbei: Warum verwendest Du nicht die ORDER BY-Klausel in SQL? MySQL ist im Sortierten schneller als PHP...
die verwende ich an sich natürlich schon, aber das problem ist in diesem fall ein spezielles:
ich ändere den inhalt einer spalte des arrays (das muss sein) und möchte nach dieser änderung eine sortierung nach eben dieser geänderten spalte; daher hilft mir mysql (order by) in diesem konkreten fall nicht weiter;
trotzdem danke für den hinweis auf array_multisort() !
werde mir das gleich näher anschauen ...
mfg
mamue