Проблемы при попытке найти корневую категорию на основе идентификатора категории - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь определить корневой уровень category_id категории на основе ее parent_id.

В приведенной ниже функции $ this-> cat_arr представляет собой массив всех категорий и их parent_id.

Если parent_id установлен в 0, он считается корневым узлом. Я хочу перебрать массив, пока не найду parent_id переданного $ cat_id .

function getRoot($cat_id) {
    foreach ($this->cat_arr as $row) {
        if ($row->cat_id == $cat_id && $row->parent_id == 0) {
            return $row->cat_id;
            break;
        } else {
            $this->getRoot($row->parent_id);
        }
    }
}

В моем приложении я вызываю эту функцию, только когда знаю, что $ cat_id не находится на корневом уровне (потому что parent_id больше 0), но когда я пытаюсь запустить ее, она застревает бесконечный цикл.

Моя логика ошибочна, или я упускаю что-то простое?

1 Ответ

0 голосов
/ 09 февраля 2011

Попробуйте это:

function getRoot($cat_id) {
    foreach ($this->cat_arr as $row) {
        if ($row->cat_id == $cat_id && $row->parent_id == 0) {
            return $row->cat_id;
        }
    }
    return $this->getRoot($row->parent_id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...