我有一个递归函数的问题,它需要太多资源才能在下拉列表中显示子父关系。例如:
home
-menu 1
-menu 2
home 1
-menu 3
-menu 4
我每次都为递归调用数据库编写了一些代码,这就是为什么我的代码需要大量资源来运行的原因。
下面是我的代码:
--调用递归
$tmp = $this->get_nav_by_parent(0);
$a_sel = array('' => '-Select-');
$a_sel_cat = array('home' => 'home');
$this->get_child_nav_cat($tmp, 0, $a_sel);
--
public function get_nav_by_parent($parent) {
$all_nav = $this->db
->select('id, title, parent')
->where('parent',$parent)
->order_by('position')
->get('navigation_links')
->result_array();
$a_tmp = array();
foreach($all_nav as $item)
{
if($parent != 0){
$item['title'] = '--' . $item['title'];
}
$a_tmp[] = $item;
}
return $a_tmp;
}
-- 递归函数
public function get_child_nav_cat($a_data, $parent, &$a_sel) {
foreach($a_data as $item) {
$a_sel[$item['page_slug_key']] = $item['title'];
$atmp = $this->get_nav_by_parent($item['id']);
$this->get_child_nav_cat($atmp, $item['id'], $a_sel);
}
return $a_sel;
}
请给我建议,以便在选择框中将数据显示为父子关系的最佳解决方案。提前致谢!