Я пытаюсь определить корневой уровень 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), но когда я пытаюсь запустить ее, она застревает бесконечный цикл.
Моя логика ошибочна, или я упускаю что-то простое?