Ответов: 0 Просмотров: 323
|
У меня есть массив
PHP:
скопировать код в буфер обмена
[0]=> ["id"]=> int(1) ["parent_id"]=> NULL ["url"]=> string(0) "" ["name"]=> string(4) "test" } [1]=> ["id"]=> int(2) ["parent_id"]=> NULL ["url"]=> string(8) "test2" ["name"]=> string(8) "Test2" } [2]=> ["id"]=> int(3) ["parent_id"]=> int(2) ["url"]=> string(6) "test3" ["name"]=> string(6) "Test3" } [3]=> ["id"]=> int(4) ["parent_id"]=> int(2) ["url"]=> string(2) "test4" ["name"]=> string(2) "TEST4" } [4]=> ["id"]=> int(5) ["parent_id"]=> int(2) ["url"]=> string(7) "test5" ["name"]=> string(7) "TEST5" } }
как можно упорядочить указанный массив, чтоб его потомки попадали в `subItems` с генерацией УРЛа от родителя, до потомка?
я понял, что можно пробовать рекурсией, но вот УРЛ не генерится
вот пример кода
PHP:
скопировать код в буфер обмена
function makeTree($array, $parentId = 0, $url = '/') { $newItems= []; foreach ($array as $item) { $item['url'] = $item['url'] ? ($url . $item['slug'] . $url) : $url; if ($item['parent_id'] == $parentId) { $subs = buildMenu($array, $item['id'], $item['slug']); if ($subs ) { $item['subItems'] = $subs; } $newItems[] = $item; } } return $newItems; }
|