Array Multi-Sort

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array Multi-Sort

    Hallo Leute!

    Ich habe für ein Upload-Verwaltungs Tool einen Algoritmus geschrieben, der mir die in einem Verzeichnis vorhandenen Dateien in einem Array zurückgibt. Dieses Array hat folgene Struktur:
    Code:
    Array
    (
        [0] => Array
            (
                [0] => datei.wmv
                [1] => 1,83 MB
                [2] => 1147645035 ( << Timestamp! )
                [3] => Sun, 14.05.06 22:17
                [4] => private
            )
    
        [1] => Array
            (
                [0] => bild.jpg
                [1] => 3,24 MB
                [2] => 1147645022
                [3] => Sun, 14.05.06 22:17
                [4] => private
            )
    
        [2] => Array
            (
                [0] => bild2.jpg
                [1] => 3,25 MB
                [2] => 1147645029
                [3] => Sun, 14.05.06 22:17
                [4] => public
            )
    
    )
    nun würde ich dieses Array gerne folgendermaßen sortieren:
    1) alle die "private" sind. danach alle die "public" sind.
    2) innerhalb der "private" und "public" alle chronologisch nach dem Timestamp.

    ich denkemal das array_multisort() da mein Freund ist... Kann mir also einer von euch einen kleinen Denkanstoß geben wie ich einen Sortier-Algoritmus schreiben kann? Das Manual hilft mir leider nicht soo viel weiter...

    Und wie gesagt: Ich brauch keine Komplettlösung... lehn sie aber auch nicht ab.

    Danke schön!
    2 meiner pages:

  • #2
    die bedingung ist nicht so einfach defeniert um das mit multisort zu erledigen.
    hier muss man schon usort anwenden
    PHP-Code:
    $array=array(array("datei.wmv","1,83 MB","1147645035","Sun, 14.05.06 22:17","private"),
    array(
    "bild2.jpg","3,25 MB","1147645029","Sun, 14.05.06 22:17","public"),
    array(
    "bild.jpg","3,24 MB","1147645022","Sun, 14.05.06 22:17","private"));

    echo 
    "<pre>".print_r($array,true)."</pre>";

    //benutzer function
    function mysort($a,$b){
      if(
    $a[4]==$b[4]){
        if(
    $a[2]==$b[2])return 0;
        else return (
    $a[2] < $b[2]) ? -1;
      }
      elseif(
    $a[4]=="private")return -1;
      return 
    1;
    }

    usort($array,"mysort");
    echo 
    "<pre>".print_r($array,true)."</pre>"
    entschuldige mich bitte für die fertige Lösung
    Zuletzt geändert von Slava; 15.05.2006, 02:00.
    Slava
    bituniverse.com

    Kommentar


    • #3
      wow.... vielen, vielen Dank Slava... Funktioniert super!

      also da wär ich so schnell nicht drauf gekommen! Respekt!
      2 meiner pages:

      Kommentar


      • #4
        gern geschehen
        Slava
        bituniverse.com

        Kommentar

        Lädt...
        X