рекурия

yintar

Новичок
Всем привет!!!
Мне надо реализовать вывод категорий и вложенных подкатегорий неограниченной вложенности. Задача вроде стандартная и я знаю что решается она с помощью рекурсии,вроде бы так и делаю.
Вот моя функция:
Код:
public function saveDataAsHtml($data) {
   
        if (is_array($this->data)) {
            foreach ($this->data as $value) {
                echo $value['text'];
                if (!empty($value['children'])) {
                    $this->saveDataAsHtml($value['children']);
                }
            }
        }
    }
массив $data имеет следующую структуру
Код:
Array
(
    [0] => Array
        (
            [text] => Компьютеры
            [parent_id] => 0
            [line] => 1
            [expanded] =>
            [category_id] => 43
            [children] => Array
                (
                    [0] => Array
                        (
                            [text] => Планшеты
                            [parent_id] => 43
                            [line] => 2
                            [expanded] =>
                            [category_id] => 49
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [text] => Ноутбуки
                            [parent_id] => 43
                            [line] => 2
                            [expanded] =>
                            [category_id] => 50
                            [children] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [text] => Автомобили
            [parent_id] => 0
            [line] => 1
            [expanded] =>
            [category_id] => 44
            [children] => Array
                (
                    [0] => Array
                        (
                            [text] => Ауди
                            [parent_id] => 44
                            [line] => 2
                            [expanded] =>
                            [category_id] => 51
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [text] => Шевроле
                            [parent_id] => 44
                            [line] => 2
                            [expanded] =>
                            [category_id] => 52
                            [children] => Array
                                (
                                )

                        )

                    [2] => Array
                        (
                            [text] => БМВ
                            [parent_id] => 44
                            [line] => 2
                            [expanded] =>
                            [category_id] => 53
                            [children] => Array
                                (
                                )

                        )

                )

        )

    [2] => Array
        (
            [text] => Бытовая техника
            [parent_id] => 0
            [line] => 1
            [expanded] =>
            [category_id] => 45
            [children] => Array
                (
                    [0] => Array
                        (
                            [text] => Пылесосы
                            [parent_id] => 45
                            [line] => 2
                            [expanded] =>
                            [category_id] => 47
                            [children] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [text] => Стиральные машины
                            [parent_id] => 45
                            [line] => 2
                            [expanded] =>
                            [category_id] => 48
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [text] => hjh
                                            [parent_id] => 48
                                            [line] => 3
                                            [expanded] =>
                                            [category_id] => 54
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [3] => Array
        (
            [text] => Строительные материалы
            [parent_id] => 0
            [line] => 1
            [expanded] =>
            [category_id] => 46
            [children] => Array
                (
                )

        )
)
но выдается ошибка
Код:
Fatal error: Maximum function nesting level of '100' reached, aborting! in
Помогите пожалуйста разобраться как сделать правильно.
 

WMix

герр M:)ller
Партнер клуба
hell0w0rd, наоборот, добавить терминатор )
yintar, $data != $this->data
 
Последнее редактирование:

Hello

Новичок
yintar, ты передаешь в метод `$data`, но ни где его не используешь. Рекурсия у тебя работает только на первом уровне массива `$this->data` что вываливается в бесконечный цикл
 
Сверху