2012-07-01 113 views
1

我正在使用codeIgniter。我需要从DB nammed大学创建一个多维数据阵列。该数据库有3列:id,OfID和名称。 OfID列包含该大学的父母的ID。对于没有任何父母的大学,将OfID设为0.创建从数据库中提取的多维数据阵列

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

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

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

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; 
} 

} 
+0

错误不是使用$ this关键字。 – user1494613

回答

1

尝试是这样的:

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

在任何情况下,最好的办法,我发现自己做递归,就是采用一些非常简单的递归函数,并且了解它的每个方面,并逐步构建它。 “一步一步”我的意思是,首先你不会传递所有的值,而是将它们打印出来,看看你在哪里,在哪里以及如何得到,然后尝试通过它们。如果你不了解它是如何工作的,那么像这样的递归函数会对大脑造成伤害。 你的理念背后的想法是,每当你偶然发现一所拥有儿童大学的大学时,就得到一个数组。我可以看到你做对了,就像我之前告诉过的那样 - 试着做出这一步 - 一步一步地,你会得到它的一个窍门。

+0

我得到你说的,谢谢朋友。 – user1494613

+0

错误不是使用$ this关键字。 – user1494613