Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Многоуровневый массив

 PHP.SU

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


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

> Без описания
JohnLemon
Отправлено: 21 Декабря, 2015 - 09:08:23
Post Id


Новичок


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


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




Всем здравствуйте, необходимо написать функцию вывода многоуровнего списка. Получение данных из базы написал. Приходят такие данные:
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [CHILD] => Array
  3.         (
  4.             [916] => Array
  5.                 (
  6.                     [IBLOCK_ID] => 5
  7.                     [~IBLOCK_ID] => 5
  8.                     [ID] => 916
  9.                     [~ID] => 916
  10.                     [NAME] => 172.30.3.113
  11.                     [~NAME] => 172.30.3.113
  12.                     [DEPTH_LEVEL] => 1
  13.                     [~DEPTH_LEVEL] => 1
  14.                     [IBLOCK_SECTION_ID] =>
  15.                     [~IBLOCK_SECTION_ID] =>
  16.                     [CHILD] => Array
  17.                         (
  18.                             [917] => Array
  19.                                 (
  20.                                     [IBLOCK_ID] => 5
  21.                                     [~IBLOCK_ID] => 5
  22.                                     [ID] => 917
  23.                                     [~ID] => 917
  24.                                     [NAME] => 1 комп
  25.                                     [~NAME] => 1 комп
  26.                                     [DEPTH_LEVEL] => 2
  27.                                     [~DEPTH_LEVEL] => 2
  28.                                     [IBLOCK_SECTION_ID] => 916
  29.                                     [~IBLOCK_SECTION_ID] => 916
  30.                                     [CHILD] => Array
  31.                                         (
  32.                                             [1014] => Array
  33.                                                 (
  34.                                                     [IBLOCK_ID] => 5
  35.                                                     [~IBLOCK_ID] => 5
  36.                                                     [ID] => 1014
  37.                                                     [~ID] => 1014
  38.                                                     [NAME] => 2 комп
  39.                                                     [~NAME] => 2 комп
  40.                                                     [DEPTH_LEVEL] => 3
  41.                                                     [~DEPTH_LEVEL] => 3
  42.                                                     [IBLOCK_SECTION_ID] => 917
  43.                                                     [~IBLOCK_SECTION_ID] => 917
  44.                                                     [CHILD] => Array
  45.                                                         (
  46.                                                             [1019] => Array
  47.                                                                 (
  48.                                                                     [IBLOCK_ID] => 5
  49.                                                                     [~IBLOCK_ID] => 5
  50.                                                                     [ID] => 1019
  51.                                                                     [~ID] => 1019
  52.                                                                     [NAME] => 3 комп
  53.                                                                     [~NAME] => 3 комп
  54.                                                                     [DEPTH_LEVEL] => 4
  55.                                                                     [~DEPTH_LEVEL] => 4
  56.                                                                     [IBLOCK_SECTION_ID] => 1014
  57.                                                                     [~IBLOCK_SECTION_ID] => 1014
  58.                                                                     [CHILD] => Array

Необходимо построить список, вложенность не ограничена. Может кто подсказать что то вообще не понимаю как с этим массивом работать. DEPTH_LEVEL - это уровень вложенности.
 
 Top
Faraon-san
Отправлено: 21 Декабря, 2015 - 09:29:42
Post Id



Посетитель


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


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




Вот самый простой пример:
PHP:
скопировать код в буфер обмена
  1. function tree(array $array){
  2.         echo '<li>';
  3.         if(isset($array['NAME']))
  4.                 echo $array['NAME'];
  5.         if(isset($array['CHILD'])){
  6.                 echo '<ul>';
  7.                 tree($array['CHILD']);
  8.                 echo '</ul>';
  9.         }
  10.         echo '</li>';
  11. }
  12. echo '<ul>';
  13. tree($array);
  14. echo '</ul>';
 
 Top
JohnLemon
Отправлено: 21 Декабря, 2015 - 09:43:09
Post Id


Новичок


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


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




Нет я пробовал что то вроде такого уже создает просто
CODE (html):
скопировать код в буфер обмена
  1. <ul><li><ul><li></li></ul></li></ul>
пустые и дальше не идет....
 
 Top
Faraon-san
Отправлено: 21 Декабря, 2015 - 09:53:08
Post Id



Посетитель


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


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




забыл цикл добавить в функцию
PHP:
скопировать код в буфер обмена
  1. function tree(array $array){
  2.         foreach ($array as $value) {
  3.         echo '<li>';
  4.         if(isset($value['NAME']))
  5.                 echo $value['NAME'];
  6.         if(isset($value['CHILD'])){
  7.                 echo '<ul>';
  8.                 tree($value['CHILD']);
  9.                 echo '</ul>';
  10.         }
  11.         echo '</li>';
  12.         }
  13. }
  14. echo '<ul>';
  15. tree($array['CHILD']);
  16. echo '</ul>';
 
 Top
JohnLemon
Отправлено: 21 Декабря, 2015 - 10:00:56
Post Id


Новичок


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


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




Так вообще только один список добавляет

(Добавление)
Я так понимаю что вся проблема в том что $value['CHILD'] не в каждом массиве. Как сделать проверку и запустить рекурсию не пойму
 
 Top
Faraon-san
Отправлено: 21 Декабря, 2015 - 10:54:01
Post Id



Посетитель


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


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




любо у тебя структура массива другая, либо ты что-то не так делаешь:
Вот что выдал скрипт по твоему массиву:
CODE (html):
скопировать код в буфер обмена
  1. <ul><li>172.30.3.113<ul><li>1 комп<ul><li>2 комп<ul><li>3 комп</li></ul></li></ul></li></ul></li></ul>
 
 Top
JohnLemon
Отправлено: 21 Декабря, 2015 - 11:22:47
Post Id


Новичок


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


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




Faraon-san пишет:
любо у тебя структура массива другая, либо ты что-то не так делаешь:

Точно у меня косяк спс, первый элемент был массивом нужно было добавить $arResult[ROOT]['CHILD'].
(Добавление)
А можете посоветовать как скрывать/раскрывать их теперь лучше список большой...? бутстрапом пробую что то не получается
 
 Top
DelphinPRO
Отправлено: 21 Декабря, 2015 - 14:07:05
Post Id



Активный участник


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


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




JohnLemon пишет:
А можете посоветовать как скрывать/раскрывать их теперь лучше список большой...? бутстрапом пробую что то не получается


http://getbootstrap[dot]com/javascript/#collapse


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB