我在 php CodeIgniter 中做一个项目,它有一个可以保存所有 attributes_values 的表,它的设计使其可以在同一个 tbl 中拥有它的孩子。数据库结构是
fld_id fld_value fld_attribute_id fld_parent_id
1 att-1 2 0
2 att-2 2 0
3 att-1_1 2 1
4 att-1_2 2 1
5 att-1_1_1 2 3
上面的 att-1 是任何属性的属性值,它有两个子 att-1_1 和 att-1_2,父 id 为 1。att-1_1 也有其子 att-1_1_1,parent_id 为 3。 fld_parent_id 是同一张表并表示其子表。现在我想像这样在树结构中显示它
Level1 level2 level3 ..... level n
att-1
+------att-1_1
| +------att-1_1_1
+------att-1_2
att-2
这种树结构可以变化到 n 级。具有父 ID 的属性值位于第一级,我从第一级提取值现在我必须检查其子级,以及它是否有更多子级并如上显示其子级。我使用了一个助手并且厌倦了使其递归,但它没有发生。那么我怎么能这样做:代码如下
foreach($attributes_values->result() as $attribute_values){
if($attribute_values->fld_parent_id==0 && $attribute_values->fld_attribute_id==$attribute->fld_id){
echo $attribute_values->fld_value.'<br/>';
$children = get_children_by_par_id($attribute_values->fld_id); //helper function
echo '<pre>';
print_r($children);
echo '</pre>';
}
}
帮助代码如下:
function get_children_by_par_id($id){ //parent id
$children = get_children($id);
if($children->num_rows()!=0){
foreach($children->result() as $child){
get_children_by_par_id($child->fld_id);
return $child;
}
}
}
function get_children($id){
$CI = get_instance();
$CI->db->where('fld_parent_id',$id);
return $CI->db->get('tbl_attribute_values');
}
请帮我...............