Имам масив който изглежда по следния примерен начин:
Array
(
[1] => Array
(
[id] => 1
[parent_id] => 0
[title] => Title1
[sort] => 30
)
[2] => Array
(
[id] => 2
[parent_id] => 0
[title] => Title2
[sort] => 20
)
[3] => Array
(
[id] => 3
[parent_id] => 1
[title] => Title3
[sort] => 20
)
[4] => Array
(
[id] => 4
[parent_id] => 1
[title] => Title4
[sort] => 30
)
[5] => Array
(
[id] => 5
[parent_id] => 1
[title] => Title5
[sort] => 10
)
[6] => Array
(
[id] => 6
[parent_id] => 0
[title] => Title6
[sort] => 10
)
[7] => Array
(
[id] => 7
[parent_id] => 5
[title] => Title7
[sort] => 10
)
[8] => Array
(
[id] => 8
[parent_id] => 5
[title] => Title8
[sort] => 20
)
)
Трябва да го подредя по следния начин 6-2-1-5-7-8-3-4
Ето и каква е логиката на подреждането. Всеки елемент има parent_id и sort, мисля че значението им се подразбира от имената на ключовете.
Всички елементи са подредени според тяхната стойност на 'sort' като след всеки елемент идват неговите деца и децата на децата ... и т.н. като и те са сортирани помежду си според техните 'sort' стойности.
6,2 и 1 са с parent_id 0 , т.е. са главните, след това следват децата на 1: 5 което е с най нисък sort от децата на 1, после 7 и 8 който са деца на 5; следва 3 и 4 който са следващите деца на 1.
Предполагам цялата задача ще може да се реши с доста на брой foreach, ksort, asort и другите sort, но търся възможно "по - елегантно" решение.
Нядавам се някой да може да помогне