递归函数不能像预期的那样工作

时间:2014-06-29 17:55:10

标签: php codeigniter recursion

我的易趣类别有parent_id个。顶级类别没有parent_id。我正在尝试编写一个递归函数,它将返回一个从最低类别到最高类别的数组,例如:

array
    0 => string '27"' 
    1 => string 'Monitors' 
    2 => string 'TV, Monitors and Display' 

然而,到目前为止,它导致无限循环。我认为这是因为parent_id在再次调用函数时没有被传递,它使用$ebay_store_category_id来自第一次传递函数时的函数叫而不是parent_id

public static function get_ebay_cats($ebay_store_category) {
    $cat_array = array();
    $ebay_store_category_id = $ebay_store_category->category_id;
    $array = self::get_cat_array($ebay_store_category_id, $cat_array);
}

private function get_cat_array($ebay_store_category_id, &$cat_array, ) {
    $ebay_cat_model = new Ebay_store_category_model($ebay_store_category_id);
    $ebay_cat_model->get();
    $cat_array[$ebay_cat_model->category_id] = $ebay_cat_model->name;
    $parent_id = $ebay_cat_model->parent_id;
    echo 'parent id :'.$parent_id.' | current category id: '.$ebay_cat_model->category_id.'<br/>';

    if(!empty($parent_id)) {
        return self::get_cat_array($parent_id, $cat_array);
    }

    return $cat_array;
}

回声的结果

我如何知道它的无限性,当函数引用自身时,父id不被传递:

parent id :6692320015 | current category id: 6697237015 parent id :6692320015 | current category id: 6697237015 parent id :6692320015 | current category id: 6697237015 parent id :6692320015 | current category id: 6697237015 parent id :6692320015 | current category id: 6697237015

我的表结构:

+------------+------------+-------------------------------+-------+-------------+
| id         | parent_id  | name                          | order | category_id |
+------------+------------+-------------------------------+-------+-------------+
| 7          | NULL       | TV, Monitors and Displays     |     0 | 7           |
| 6701115015 | 7          | Monitors                      |     4 | 6701115015  |
| 5661200015 | 6701115015 | 27"                           |     3 | 6701114015  |

1 个答案:

答案 0 :(得分:0)

这是一个CI事物。我使用$ebay_cat_model->get_where(array('id'=>$ebay_store_category_id));代替$ebay_cat_model = new Ebay_store_category_model($ebay_store_category_id);,现在可以使用了。