Carsten: (PROGRAMMIERTECHNIK) 2-dimensionale Arrays sortieren. Wie?

Beitrag lesen

Hi thomas j.

doch da habe ich immer noch zwei fragen [...]

das hatte ich befürchtet ;-)

  1. wie kann ich "rückwärts" sortieren? oder das array nach dem sortieren "umdrehen"? (nutze PHP3)
  2. nur, falls Du noch lust und zeit hast (die lösung benötige ich nicht, aber würde mich sehr interessieren!)...
    [...]  ich möchte nun nach der zweiten spalte sortieren! geht das ohne weiteres?

....uff, sie ist nicht dabei.

Na klar geht das beides und zwar ziemlich einfach, du brauchst nur deine Vergleichsfunktion anzupassen:

Rückwarts sortieren:

function vergleich($a,$b)
{
    if($a[0] < $b[0])    // > und < getauscht !
        return 1;

if($a[0] > $b[0])
        return -1;

return 0;
}

Beliebige Spalte sortieren:

$spalte=1;     // hier Wunschspalte zuweisen

function vergleich($a,$b)
{
    global $spalte;

if($a[$spalte] > $b[$spalte])
        return 1;

if($a[$spalte] < $b[$spalte] )
        return -1;

return 0;
}

Der Rest bleibt jeweils gleich, d.h. sortieren mit usort($feld,vergleich);

...also sieht dein SuperSort so aus:

function mySuperbSort($theArray, $sortIndex)
{
    global $spalte;
    
    $spalte=$sortIndex;
    usort($theArray,vergleich);
}

Das mit der globalen Variable $spalte ist natürlich etwas häßlich, aber erstmal das einfachste. Die
Funktion vergleich() wird ja vom Sortieralgorithmus usort() aufgerufen, auf die Aufrufparameter hat
man daher keinen Einfluß, einfach mitübergeben geht also nicht.

Diesmal übrigens alles in ungetestet - fehlende $ bitte ergänzen.

viel Spass beim ausprobieren,

Carsten