mehrdimensionale Arrays sortieren

bastiglasl

Erfahrenes Mitglied
Wie kann ich mehrdimensionale Arrays sortieren?
Die Arrays haben die Form:

Code:
    [7] => Array
        (
            [0] => 3
X-Mailer:
            [1] => Array
                (
                    [id] => 80
                    [UserNr] => 13
                    [AnhangName] => Homer.jpg
                    [AnhangTyp] => application/octet-stream
                    [AnhangEncoding] => base64
                    [message_id] => b136cee513d2acd2428d7e7cf9327ea5
                )

            [2] => laptop@priskon.de
            [3] => laptop@priskon.de
            [4] => 123443565
            [5] => 27-Jul-2004 15:18:06 
            [6] => b136cee513d2acd2428d7e7cf9327ea5
            [touched] => 1
        )

    [8] => Array
        (
            [0] => 3
X-Mailer:
            [1] => Array
                (
                    [id] => 79
                    [UserNr] => 13
                    [AnhangName] => Homer.jpg
                    [AnhangTyp] => application/octet-stream
                    [AnhangEncoding] => base64
                    [message_id] => 67cf8b58317116074e96086c5338877d
                )

            [2] => laptop@priskon.de
            [3] => laptop@priskon.de
            [4] => dsll988776545
            [5] => 27-Jul-2004 15:16:17 
            [6] => 67cf8b58317116074e96086c5338877d
            [touched] => 1
        )

    [9] => Array
        (
            [0] => 3
X-Mailer:
            [1] => Array
                (
                    [id] => 78
                    [UserNr] => 13
                    [AnhangName] => Homer.jpg
                    [AnhangTyp] => application/octet-stream
                    [AnhangEncoding] => base64
                    [message_id] => dc335dab5626a692d3980159304d83ea
                )

            [2] => laptop@priskon.de
            [3] => laptop@priskon.de
            [4] => dsglk zui56 5t
            [5] => 27-Jul-2004 15:10:32 
            [6] => dc335dab5626a692d3980159304d83ea
            [touched] => 1
        )
Am schluß sollten die Arrays nach einem bestimmten Punkt sortiert sein.
Gibt es da irgendwelche Funktionen, oder kann mir jemand von euch helfen?
 
Arbeite dich in Sortieralgorithmen rein (BubbleSort für den Anfang z.B.) und versuch dann dementsprechend eine Funktion aufzubauen.


MfG Radhad
 
Hi,

ich stehe gerade vor dem selben Problem. Hat hier noch keiner eine dokumentierte funktion oder klasse für geschrieben? Mit google findet man zwar einiges aber ein großer Teil ist nur heiße Luft - von wegen schau in die doku oder schau dir die Funktion array_multisort an.

Irgendwie werde ich daraus aber nicht wirklich schlau.

Ein Beispiel würde uns hier bestimmt helfen! :D (stimmts?)

Mir würde auch schon ein Ansatz eines "einfachen mehrdimensionalen Arrays reichen!

Code:
Array
(
    [0] => Array
        (
            [id] => 10
            [name] => BC16
          )

    [1] => Array
        (
            [id] => 15
            [name] => BE08
            )

   [2] => Array
        (
            [id] => 12
            [name] => BE08
            )
)

mit welcher Funktion könnte man das array nun nach "id" (egal ob auf oder absteigend) sortieren?

Danke! (bin für jeden Tipp dankbar)
 
Ein paar Posts weiter unten wird die Lösung beschrieben. versucht es mal mit [phpf]usort[/phpf]

Suchen bildet ;)
 
ansonsten habe ich das bei php in den Userkommentaren der Funktionsreferenz gefunden:

PHP:
<?php
// $arr = array to sort.
// $col = column to sort by.
function incision_sort($arr, $col){
       for($k = 0; $k < sizeof($arr)-1; $k++){
           // $arr[$k+1] is possibly in the wrong place. Take it out.
           $t = $arr[$k+1];
           $i = $k;   
          
           // Push $arr[i] to the right until we find the right place for $t.
           while($i >= 0 && $arr[$i][$col] > $t[$col]){
               $arr[$i+1] = $arr[$i];
               $i--;
           }
          
           // Insert $t into the right place.
           $arr[$i+1] = $t;                           
       }// End sort
       return $arr;       
   }

?>
 
Original geschrieben von Ben Ben
ansonsten habe ich das bei php in den Userkommentaren der Funktionsreferenz gefunden:

PHP:
<?php
// $arr = array to sort.
// $col = column to sort by.
function incision_sort($arr, $col){
       for($k = 0; $k < sizeof($arr)-1; $k++){
           // $arr[$k+1] is possibly in the wrong place. Take it out.
           $t = $arr[$k+1];
           $i = $k;   
          
           // Push $arr[i] to the right until we find the right place for $t.
           while($i >= 0 && $arr[$i][$col] > $t[$col]){
               $arr[$i+1] = $arr[$i];
               $i--;
           }
          
           // Insert $t into the right place.
           $arr[$i+1] = $t;                           
       }// End sort
       return $arr;       
   }

?>

BINGO! So funktionierts! Warum habe ich das nicht selber gefunden? Ich hatte fast alle userkommentare durchgeschaut und auch ein paar getestet - der ist mir irgendwie nicht aufgefallen.

VIELEN DANK! du hast mir wirklich viel Arbeit erspart!
 
Zurück