PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
oldman
Отправлено: 05 Декабря, 2019 - 17:55:33
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2019  


Помог: 0 раз(а)




У меня есть массив
PHP:
скопировать код в буфер обмена
  1.  
  2. array(13) {
  3.   [0]=>
  4.   array(4) {
  5.     ["id"]=> int(1)
  6.     ["parent_id"]=> NULL
  7.     ["url"]=> string(0) ""
  8.     ["name"]=> string(4) "test"
  9.   }
  10.   [1]=>
  11.   array(4) {
  12.     ["id"]=> int(2)
  13.     ["parent_id"]=> NULL
  14.     ["url"]=> string(8) "test2"
  15.     ["name"]=> string(8) "Test2"
  16.   }
  17.   [2]=>
  18.   array(4) {
  19.     ["id"]=> int(3)
  20.     ["parent_id"]=> int(2)
  21.     ["url"]=> string(6) "test3"
  22.     ["name"]=> string(6) "Test3"
  23.   }
  24.   [3]=>
  25.   array(4) {
  26.     ["id"]=> int(4)
  27.     ["parent_id"]=> int(2)
  28.     ["url"]=> string(2) "test4"
  29.     ["name"]=> string(2) "TEST4"
  30.   }
  31.   [4]=>
  32.   array(4) {
  33.     ["id"]=> int(5)
  34.     ["parent_id"]=> int(2)
  35.     ["url"]=> string(7) "test5"
  36.     ["name"]=> string(7) "TEST5"
  37.   }
  38. }
  39.  
  40.  


как можно упорядочить указанный массив, чтоб его потомки попадали в `subItems` с генерацией УРЛа от родителя, до потомка?
я понял, что можно пробовать рекурсией, но вот УРЛ не генерится

вот пример кода

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function makeTree($array, $parentId = 0, $url = '/') {
  4.     $newItems= [];
  5.     foreach ($array as $item) {
  6.        $item['url'] = $item['url'] ? ($url . $item['slug'] . $url) : $url;
  7.        if ($item['parent_id'] == $parentId) {
  8.            $subs = buildMenu($array, $item['id'], $item['slug']);
  9.            if ($subs ) {
  10.               $item['subItems'] = $subs;
  11.            }
  12.                                
  13.            $newItems[] = $item;
  14.        }
  15.     }
  16.  
  17.     return $newItems;
  18. }
  19.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB