1

我正在使用 codeIgniter。我需要创建一个数据库命名学院的数据的多维数组。该数据库有 3 列:id、OfID 和 name。OfID 列包含该学院家长的 ID。对于没有任何父母的大学,OfID 为 0。

该数组应包含以 OfID=0 作为第一维元素的大学的名称、ID 和 OfID。对于具有 OfID!=0 的大学,应将其 ID 为 OfID 的大学作为第二维数组(依此类推)。

我想递归地做到这一点,但我无法完成这个。我知道这有很多错误,请帮助。

模型类如下:(控制器调用 meth() 函数)

class Model extends CI_Model
{
var $return_this=array();
function meth()
{       
    $loop_id=0;
    getit($loop_id);
    var_dump($return_this);
}
function getit($loop_id)
{
    $index=0;
    $query = $this->db->query("select * from college where OfID=$loop_id ORDER BY `OfID` ASC;");
    if ($query->num_rows() > 0)
    {
        foreach ($query->result() as $row)
        {
            $pass=$row->id;
            $temp=getit($pass);
            if($temp==0)
            $return_this[$loop_id]= $query->result();
        }
    }
    else return 0;
}

}
4

1 回答 1

1

尝试这样的事情:

$rows = array();
foreach ($query->result() as $row)
    {
        $pass=$row->id;
        $rows[] = getit($pass);
    }
return $rows;

无论如何,我发现自己进行递归的最佳方法是采用一些非常简单的递归函数,并且您了解它的各个方面,然后逐步构建它。“一步一步”我的意思是一开始你不会传递所有的值,而是将它们打印出来,只是为了看看你得到了什么、在哪里以及如何得到,然后尝试传递它们。如果你不了解它是如何工作的,那么像这样的递归函数会对大脑造成伤害。你的想法是,每次你偶然发现一所拥有子学院的大学时,都会得到一个数组。我可以看到你做对了,只要像我之前所说的那样尝试做这个 - 一步一步你就会掌握它。

于 2012-07-01T18:54:09.500 回答