Codeigniter递归获取所有ID

时间:2013-08-12 14:34:57

标签: php codeigniter loops recursion

我想从1个表中获取递归的所有ID。我设法回应那些变量但是当我试图将它放入数组时我失败了。这是字符串版本:

public function get_numProducts($cid)
{
    $this->db->select('cat_id');
    $this->db->from('ci_categories');
    $this->db->where('cat_child',$cid);
    $q = $this->db->get();

    $result = $q->result();

    $i=0;
    $a="";
    foreach($result as $mainCategory)
    {
        $a .= $mainCategory->cat_id;
        $a .= $this->get_numProducts($mainCategory->cat_id);
    }

    return $a;

}

当用param“4”调用这个函数时,我得到字符串输出:89。哪个好。但我想输出一个数组(4,8,9)。谢谢你的帮助

修改

第二版

public function get_numProducts($cid)
{
    $this->db->select('cat_id');
    $this->db->from('ci_categories');
    $this->db->where('cat_child',$cid);
    $q = $this->db->get();

    $result = $q->row();
    $n = $q->num_rows();

    if ($n > 0)
    {
        $array[] = $result->cat_id." ";
        $array[] = $this->get_numProducts($result->cat_id);
    }


    return $array;

}

此版本返回数组但是多维:

array (size=2)
  0 => string '8 ' (length=2)
  1 => 
    array (size=2)
      0 => string '9 ' (length=2)
      1 => null

1 个答案:

答案 0 :(得分:1)

您必须将数组传递给函数的每次迭代。

public function get_numProducts($cid, &$array)

...

$array[] = $cid;

if ($n > 0) $this->get_numProducts($result->cat_id, $array);