Im는 PHP에서 프로젝트를하고 있습니다. CodeIgniter는 모든 attributes_values를 유지할 수있는 테이블을 가지고 있으며 동일한 tbl에 자식을 가질 수 있도록 설계되었습니다. 데이터베이스 구조는 속성의 속성 값 ATT-1 상기 여기PHP에서 재귀
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_1 및 ATT-1_2 상위 ID 1과 ATT-1_1와도 자식 att-를 있음 1_1_1 with parent_id 3. fld_parent_id는 동일한 테이블의 fld_id이며 해당 테이블의 하위를 나타냅니다. 이제 나는이
Level1 level2 level3 ..... level n
att-1
+------att-1_1
| +------att-1_1_1
+------att-1_2
att-2
같은 트리 구조로이 보여주고 싶은이 트리 구조는 n 개의 레벨 최대 개까지 다양 할 수있다. 부모 ID를 가진 속성 값은 레벨 1에 있고 레벨 1에서 값을 추출 했으므로 이제 그 아이를 검사해야하고 더 이상 자식이 있고 위와 같이 자식을 표시해야합니다. 도우미를 사용하여 재귀 적으로 사용하는 데 피곤감을 느낄 수는 있지만 실제로 발생하지는 않습니다. 그래서 내가 어떻게 할 수있는이 같은 : 코드
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');
}
저를 도와주세요 ..............
'$ 결과 [ '아이들'] = get_children 사용 ($ 결과 [ 'ID가])'이 오류는이 주어진다 line "stdClass 유형의 객체를 배열로 사용할 수 없습니다." – Robz
그러면 응답이 stdclass입니다. 코드는 $ result-> children = get_children ($ result-> id)로 바뀌어야합니다. – MKroeders
코드는 완전히 나를 위해 작동하지 않았지만 당신이 나를 도왔던 방식으로 효과가있었습니다. 나는 특정 변화를했고 그것은 나를 위해 일했다. .. thanks – Robz