【发布时间】:2014-08-20 03:36:33
【问题描述】:
我有具有parent_ids 的 ebay 类别。顶级类别没有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 |
【问题讨论】:
-
顺便说一句:您将
$count传递给从未读取过的get_cat_array。 -
谢谢,拿出来了。在我的代码中使用它,以为我已经把它们都拿出来了。
-
如果存在无限循环,则条件可能在所有情况下都为真。我会打印出
$parent_id进行调试,看看为什么它不为空。 -
我已经包含了我正在使用的 echo 语句和结果,它总是相同的
$parent_id -
看起来像是一个奇怪的代码点火器。我尝试使用 get_where 获取模型,现在它可以按预期工作:S
标签: php codeigniter recursion