2011-02-09 48 views
0

我想根据它的parent_id找出类别的根级category_id。尝试根据类别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可能需要一组单引号“0”,作为FALSE,而不是零(我可以是完全错误的,但只是想我会提出一个建议) – OldWest 2011-02-09 04:34:48

+0

@OldWest:你完全错了;-) – zerkms 2011-02-09 04:42:12

回答

0

试试这个:

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); 
}