У меня есть несколько функций, связанных с навигацией, и я не хотел бы иметь ограничений по глубине. Они генерируют меню CSS, цепочки крошек и тому подобное.
Я поставлен в тупик относительно того, как заставить функции следовать каждому пути к глубине или к корню без явного зацикливания.
Ниже приведен типичный пример, когда мне нужен самый верхний родительский элемент страницы. Самый верхний будет иметь значение ноль в своем поле parent
.
Вот явно зацикленная версия:
function topPg() {
$p = $this->retrieve("id = '$this->parent'");
if ($p->parent != 0) {
$gp = $this->retrieve("id = '$p->parent'");
if ($gp->parent != 0) {
$ggp = $this->retrieve("id = '$gp->parent'");
if ($ggp->parent != 0) {
$gggp = $this->retrieve("id = '$ggp->parent'");
// ad naseum
} else {
return $ggp;
}
} else {
return $gp;
}
} else {
return $p;
}
} // func
У кого-нибудь есть совет или подобный код, или ссылка, чтобы помочь указать путь?