Mehrdimensionales Array mit multisort sortieren

casperdu

Grünschnabel
Ich arbeite mit Nested Sets und möchte nachträglich die Ausgabe am Bildschirm über eine Prioritätszahl realisieren. Das Array muss vor der Ausgabe als sortiert werden.

Ich möchte das Array rekursiv nach [priroity] soriteren. Höchste Zahl zuerst (DESC). Bekomme es nur nicht hin :(

Mein Ansatz endet immer wieder in einer Fehlermeldung:
PHP:
array_multisort($tree_array[$id], SORT_DESC, SORT_NUMERIC, 'priority');


PHP:
print_r($tree_array); 
Array
(
    [689] => Array
        (
            [id] => 689
            [lft] => 334
            [rgt] => 347
            [type] => folder
            [mouseover] => 
            [title] => Produktberatung
            [block] => ...
            [children] => 6
            [priority] => 100 
            [level] => 1
            [subnodes] => Array
                (
                    [691] => Array
                        (
                            [id] => 691
                            [lft] => 335
                            [rgt] => 336
                            [status] => true
                            [navigation] => true
                            [type] => folder
                            [mouseover] => 
                            [title] => Camouflage
                            [block] => ...
                            [level] => 2
                            [children] => 0
                            [priority] => 100
                        )

                    [692] => Array
                        (
                            [id] => 692
                            [lft] => 337
                            [rgt] => 338
                            [status] => true
                            [navigation] => true
                            [type] => folder
                            [mouseover] => 
                            [title] => Spezialeffekte
                            [block] => ...
                            [level] => 2
                            [children] => 0
                            [priority] => 52
                        )

                    [693] => Array
                        (
                            [id] => 693
                            [lft] => 339
                            [rgt] => 340
                            [status] => true
                            [navigation] => true
                            [type] => folder
                            [mouseover] => 
                            [title] => Beauty Make-up
                            [block] => ...
                            [level] => 2
                            [children] => 0
                            [priority] => 2
                        )

                    [690] => Array
                        (
                            [id] => 690
                            [lft] => 341
                            [rgt] => 346
                            [status] => true
                            [navigation] => true
                            [type] => folder
                            [mouseover] => 
                            [title] => Gesichtsbemalung
                            [block] => ...
                            [level] => 2
                            [children] => 2
                            [priority] => 98
                            [subnodes] => Array
                                (
                                )

                        )

                )

        )
 
Auf welchem Level? Sollen die Levels durchmischt werden?

Also wie soll die Struktur nach der Sortierung aussehen.
 
Ab Level 2, Level 1 ist bereits durch die MySQL-Query nach Priorität absteigend sortiert.
Das Array bzw. die Subnodes sollen sortiert werden:

[subnodes] => Array
(
[691] => Array
(
[id] => 691
....
[priority] => 100
)

[692] => Array
(
[id] => 692
....
[priority] => 99
)
 
Einfach nach dem Beispiel 'Datenbankdaten sortieren' Auf de Help-Seite...
PHP:
foreach($tree_array[689]['subnodes'] as $key => $node){
    $priority[$key] = $node['priority'];
}

array_multisort($priority, SORT_DESC, $tree_array[689]['subnodes']);
print_r($tree_array)
 
Zurück