我已经编写了一个带有while循环的函数,用于从PHP中获取DB类的递归父类,它实现了我的目的。但我想知道(实际上很奇怪)我怎么能通过递归函数来做到这一点?如果是,那怎么样?它所做的只是通过使用categoroy_id返回父类别数组。如果不清楚,请告诉我。
public function get_recursive_parents($category_id){
$categories = array();
$res = $this->db->from('categories')->where('cat_id',$category_id)->get()->row_array();
$cat_id = $res['parent_id'];
$categories[] = $res;
while($cat_id){
$res = $this->db->from('categories')->where('cat_id',$cat_id)->get()->row_array();
$categories[] = $res;
$cat_id = $res['parent_id'];
}
return $categories;
}
答案 0 :(得分:0)
要将其转换为递归函数,它应该像这样工作(未经测试,但逻辑应该类似)。
public function get_recursive_parents($category_id){
$categories = array();
$res = $this->db->from('categories')->where('cat_id',$category_id)->get()->row_array();
$cat_id = $res['parent_id'];
$categories[] = $res;
while($cat_id) {
$categories[] = get_recursive_parents($cat_id);
}
return $categories;
}
答案 1 :(得分:0)
我还没有对代码进行测试,所以我不确定它是否正确:
<?php
public function get_recursive_parents($category_id) {
$categories = array();
__get_recursive_parents($res['parent_id'], $categories);
return $categories;
}
public function __get_recursive_parents($cat_id, &$output){
$res = $this->db->from('categories')->where('cat_id',$cat_id)->get()->row_array();
$output[] = $res;
if ($res['parent_id']) {
__get_recursive_parents($res['parent_id'], $output);
}
}
答案 2 :(得分:-1)
递归函数中的数据库查询?你的DBA可能会把你带回去拍你。