【问题标题】:Recursive function not working as expected php递归函数没有按预期工作php
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多