2012-07-01 107 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