我正在使用codeIgniter。我需要从 DB 命名学院创建数据的多维数组。数据库有 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;
}
}
尝试这样的事情:
$rows = array();
foreach ($query->result() as $row)
{
$pass=$row->id;
$rows[] = getit($pass);
}
return $rows;
无论如何,我发现自己做递归的最好方法是采用一些非常简单的递归函数,你知道它的各个方面,并逐步构建它。通过"逐步",我的意思是一开始你不会传递所有值,而是将它们打印出来,只是为了看看你得到什么、在哪里以及如何得到,然后尝试传递它们。像这样的递归函数是会损害大脑的,如果你不明白它是如何工作的。你背后的想法是,每次你偶然发现一所有儿童大学的大学时,都要得到一个数组。我可以看到你做对了,只要试着按照我之前所说的那样做这个 - 一步一步,你就会掌握它。