mamue: assoziatives array sortieren

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

  1. 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

    --
    Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
                          -- Albert Einstein
    1. 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