@mrgnv

Как вывести полный url дерева категорий?

Есть массив с категориями:

Array
    (
        [1] => stdClass Object
        (
            [id] => 1
        [parent_id] => 0
        [name] => Первый
        [url] => perviy
        [level] => 1
        [subcategories] => Array
            (
                [0] => stdClass Object
                (
                    [id] => 2
                [parent_id] => 1
                [name] => Второй
                [url] => vtoroy
                [level] => 2
                [subcategories] => Array
                    (
                        [0] => stdClass Object
                        (
                            [id] => 3
                        [parent_id] => 2
                        [name] => Третий
                        [url] => tretiy
                        [level] => 3
                        )
                    )
                )
            )
        ),
        [2] => stdClass Object
        (
            [id] => 4
        [parent_id] => 0
        [name] => Четвертый
        [url] => chetvertiy
        [level] => 1
        [subcategories] => Array
            (
        )

        )
    )

Надо вывести на экран полные пути (URL) в таком порядке:

perviy
perviy/vtoroy
perviy/vtoroy/tretiy
chetvertiy

Понимаю, что рекурсией, но не выходит.
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
0xD34F
@0xD34F
function getUrls($tree, $url = '') {
  $urls = [];

  foreach ($tree as $n) {
    $newUrl = ($url ? $url.'/' : '').$n->url;
    array_push($urls, $newUrl, ...getUrls($n->subcategories ?? [], $newUrl));
  }

  return $urls;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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