• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array sortieren anhand eines Wertes im Sub-Array

Hansii

Mitglied
Hallo.

Ich habe massig Arrays mit folgender Struktur:

PHP:
<?php
    $arr_Values = array();
    $arr_Values['xyz'] = array(
                                'name'=>'xyz',
                                'size'=>'2135',
                                'data'=>'xadjasdkhhk.skl'
                                                    );
    $arr_Values['dasda'] = array(
                                'name'=>'dasda',
                                'size'=>'123'
                                'data'=>'dasd.skl'
                                                    );
?>

Jetzt möchte ich das Array Durchlaufen können, allerdings soll es sortiert sein, z.B. nach "Name" oder "Size" :)

Meine Funktion macht das auch, allerdings wenn eine sortierte Größe doppelt ist, gibt es nur den letzten Wert. Ich weiß logischer Weise auch warum, da ich den Key immer wieder überschreibe. Hier meine Funktion:

PHP:
<?php
    function sortFiles($arr_Files,$str_Key,$boo_Reverse = false)
            {
                $arr_Current = $arr_Return = array();
           
                foreach($arr_Files AS $str_Name => $arr_File)
                {
                    $arr_Current[$arr_File[$str_Key]] = $str_Name;
                }
           
                if($boo_Reverse)
                {
                    krsort($arr_Current);
                }
                else
                {
                    ksort($arr_Current);
                }
           
                foreach($arr_Current AS $str_KeyValue => $str_Name)
                {
                    $arr_Return[$str_Name] = $arr_Files[$str_Name];
                }
           
                return $arr_Return;
            }
?>

Diesen rufe ich z.B. auf mit

PHP:
<?php
    $arr_Sorted = sortFiles($arr_Values,'size',false);
?>

Weiteres Problem: Großgeschriebene Wörter werden ganz an den anfang geschrieben :O

Wie kann ich das sauber lösen. Wichtig ist, dass ich das Array so zurückbekomme, wie es jetzt zurück gegeben wird (=> nur halt nach etwas sortiert) und dass ich es nach allem sortieren kann(z.B. name,data,size und auch noch weiteren => deswegen der Funktionsparameter!), da es schon eine Weiterverarbeitung gibt. Danke :):)

PS: Das Main-Array soll sortiert werden ! Nicht die SubArrays :D

Desweiteren gibt es ein weiteres Problem: Alle Großgeschr
 
Zuletzt bearbeitet:
Wenn du unbedingt, also wenn es wirklich nicht anders geht, nach deinen eigenen Regeln sortieren musst solltest du diese Funktion verwenden.

http://de3.php.net/usort

Sieht aus als wenn du ein wenig programmieren kannst. Solltest mit der Beschreibung die dir gegeben wird zurecht kommen.

lg
 
Zurück
Oben