JaxAdam
@JaxAdam
Junior Full-Stack Developer

Как организовать рекурсию для отображения подкатегории?

Доброго дня! Вывел такое деревце:
# это результат var_dump($categoriesTree)
array(1) {
  [0]=>
  array(4) {
    ["id"]=>
    string(1) "7"
    ["category_name"]=>
    string(14) "Фильтры"
    ["parent_id"]=>
    string(1) "0"
    ["childs"]=>
    array(1) {
      [0]=>
      array(3) {
        ["id"]=>
        string(1) "8"
        ["category_name"]=>
        string(18) "Воздушные"
        ["parent_id"]=>
        string(1) "7"
      }
    }
  }
}

А это то, как я попытался вывести и вдруг осознал, что так бесконечно продолжаться не может.
if ($categoriesTree) {
                                foreach ($categoriesTree as $cat) {
                                    echo '<div class="catItem" data-id="' . $cat['id'] . '">' . $cat['category_name'] . '</div>';
                                    if ($cat['childs']) {
                                        foreach ($cat['childs'] as $subcat) {
                                            echo '<div class="catItem" data-id="' . $subcat['id'] . '">' . "•• " . $subcat['category_name'] . '</div>';
                                            if ($subcat['childs']) {
                                                foreach ($subcat['childs'] as $subsubcat) {
                                                    echo '<div class="catItem" data-id="' . $subsubcat['id'] . '">' . "•••• " . $subsubcat['category_name'] . '</div>';
                                                }
                                            }
                                        }
                                    }
                                }
                            }

Простите за неопрятность кода! После копипаста так получилось, Shift+Tab не работает тут, а кнопочки не видел.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Рекурсия это функция, в аргумент передаете текущий массив, если он содержит массивы - снова вызываете эту же функцию с уже новым массивом, таким образом все самозацикливается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы