Я пытаюсь выяснить корневой уровень category_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), но когда я пытаюсь запустить это она застревает в бесконечная петля.
Является ли моя логика ошибочной, или я пропустил что-то простое?
Просто быстро мысль, но ваше выражение: == 0, возможно, потребуется набор одинарные кавычки «0» потому что это может быть чтение, что, как FALSE, в отличие от нуля (я мог бы быть абсолютно неправильным, но просто подумал, что я сделаю предложение) – OldWest
@OldWest: вы совершенно неправы ;-) – zerkms
Вы бесконечно зацикливаетесь, потому что каждый раз, когда вы рекурсируете, вы начинаете foreach в начале снова. –