$val) { if ($val->$pid == $root) { unset($list->$key); if (!empty($list)) { $child = obj_tree($list, $pk, $pid, $child, $val[$pk]); if (!empty($child)) { $val->child=$child; } else { $val->child = array(); } } $tree[]=$val; } } return $tree; } function make_tree($list, $pk = 'id', $pid = 'pid', $child = 'child', $root = 0) { $tree=array(); foreach ($list as $key => $val) { if ($val[$pid]==$root) { unset($list[$key]); if (!empty($list)) { $child = make_tree($list, $pk, $pid, $child, $val[$pk]); if (!empty($child)) { $val['child']=$child; } else { $val['child']= array(); } } $tree[]=$val; } } return $tree; }