За последние 24 часа нас посетили 17816 программистов и 1286 роботов. Сейчас ищут 1528 программистов ...

Многоуровневое меню из массива php

Тема в разделе "PHP для новичков", создана пользователем skillful, 12 окт 2015.

  1. skillful

    skillful Активный пользователь

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте. Есть такой массив:
    Код (PHP):
    1. (
    2.     [0] => stdClass Object
    3.         (
    4.             [id] => 1155
    5.             [name] => Первый уровень
    6.             [parent] => 0
    7.             [sublevel] => 0
    8.         )
    9.     [1] => stdClass Object
    10.         (
    11.             [id] => 1157
    12.             [name] => Подменю
    13.             [parent] => 1155
    14.             [sublevel] => 1
    15.         )
    16.     [2] => stdClass Object
    17.         (
    18.             [id] => 4
    19.             [name] => Подменю
    20.             [parent] => 1155
    21.             [sublevel] => 1
    22.         )
    23.     [3] => stdClass Object
    24.         (
    25.             [id] => 1
    26.             [name] => Главная
    27.             [parent] => 0
    28.             [sublevel] => 0
    29.         )
    30.     [4] => stdClass Object
    31.         (
    32.             [id] => 1156
    33.             [name] => Помощь!!!
    34.             [parent] => 0
    35.             [sublevel] => 0
    36.         )
    37. ) 
    Можно ли из него сделать многоуровневое меню, примерно такое:
    Код (PHP):
    1. <ul>
    2.     <li>
    3.         <a href="#">
    4.             <span>Первый уровень</span>
    5.         </a>
    6.         <ul>
    7.             <li>
    8.                 <a href="">
    9.                     <span>Подменю</span>
    10.                 </a>
    11.             </li>
    12.             <li>
    13.                 <a href="">
    14.                     <span>Подменю</span>
    15.                 </a>
    16.             </li>
    17.         </ul>
    18.     </li>
    19.     <li class="">
    20.         <a href="">
    21.             <span>Главная</span>
    22.         </a>
    23.     </li>
    24.     <li class="">
    25.         <a href="">
    26.             <span>Помощь!!!</span>
    27.         </a>
    28.     </li>
    29. </ul> 
    Может есть уже похожий пример, или подскажите ссылки на какие-нибудь ресурсы где массив именно такого же вида, буду очень благодарен.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Функцию со вложенными foreach для такого преобразования можно самому написать за 5 мин. Пораскинь немного мозгами.
    ЗЫ HTML код у тебя кривой.
     
  3. skillful

    skillful Активный пользователь

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Где кривость ТЫ увидел?
     
  4. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Пардон код нормальный. Не внимательно смотрел.
     
  5. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    skillful но html реально не валидный (;
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в чем?
     
  7. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    показалось
     
  8. skillful

    skillful Активный пользователь

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Здесь machetero - Не внимательно смотрел.
    p@R@dox - показалось

    machetero - левым глазом смотрел левее от монитора
    p@R@dox - Ему вообще показалось (смотрел в неизвестном направлении)

    P.S. Форум есть, надежды нету...
     
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Ты тут ябедничать пришел, или тебе надо помочь?
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    skillful до сих пор не сообразил как сделать?
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    skillful ты объект из json получаешь или есть класс который возвращает такой результат?
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    Вот из моего проекта с похожим массивом код, только у меня немного переменные по-другому названы, разберись уж сам
    Код (PHP):
    1. <?php
    2. $levels = [$menu[0]->level];
    3. echo "<ul>";
    4. foreach ($menu as $ind=>$item) {
    5.     if ($item->level > $levels[0]) {
    6.         echo "<ul>";
    7.         array_unshift($levels, $item->level);
    8.     }
    9.     else {
    10.         while ($item->level != $levels[0]) {
    11.             echo "</li></ul>";
    12.             array_shift($levels);
    13.         }
    14.     }
    15.     if ($ind != 0)
    16.         echo "</li>";
    17.     echo "<li><a href='$item->url'>$item->name</a>";
    18. }
    Сделано с использованием стека
     
  13. skillful

    skillful Активный пользователь

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Мне уже помогли... Сп
    Это возвращает класс...
    Спасибо большое, думаю разобрался, бы, но мне уже помогли

    Спасибо...
     
  14. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    skillful, Да когда же вы научитесь читать форум.
    Мозгов так и не прибавилось за 5 то лет?
    РЕКУРСИЯ!!!
    Хотя - прокуренные или проколотые мозги, за 5 лет, тебе мало, что даст это слово.
    Сочувствую.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Какой ты свирепый.
     
  16. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    кто бы говорил ;) вот не надо мне тут рассказывать.