2014-10-19 78 views
2

有一天我遇到了這個問題,我找不到解決方案。 我的目標是從一個ID(父親)返回一個鏈接列表。所以我想要他所有的孩子。 但在目前看來,我只有結果(第一個...)。Codeigniter多維數組只返回第一行

我有我的控制器:

$data['list_link'] = $this->menuManager->list_link(); 

在我的模型:

function list_link($fatherid=0){ 
    $r = array(); 
    $sSQL = 'SELECT * FROM categories WHERE fatherid = ' . $fatherid . ' AND siteid = ' . MY_SITEID_DEFAULT . ' ORDER BY name'; 
    $query = $this->db->query($sSQL); 
    // stock results in array 
    $r[] = $query->result_array(); 
    foreach ($query->result() as $row) { 
     // let's find the childs 
     $this->list_link($row->id,$loop); 
    } 
    return $r; 
} 

如果我 「爲每一個」 的$這裏R,一切看起來不錯。 因此,$ data ['list_link'] shoud現在擁有所有行。

筆者認爲:

foreach ($list_link as $link){ 
    foreach ($link as $row){ 
     echo $row['name']; 
    } 
} 

但是,我只有第一個鏈接(第一個孩子的),沒有另外一個。任何幫助將不勝感激,因爲我在那個問題上好幾天...

回答

1

你沒有在遞歸調用中存儲任何值(儘管我仍然不確定你會得到你期望的)。你需要填充$r每個函數調用:

$r[] = $this->list_link($row->id,$loop); 

然而,無論是我錯過了一些東西,或者你過於複雜的事情,但我認爲你可以簡單地返回結果數組並使用它:

function list_link($fatherid=0,$loop=0){ 
    $sSQL = 'SELECT * FROM categories WHERE fatherid = ' . $fatherid . ' AND siteid = ' . MY_SITEID_DEFAULT . ' ORDER BY name'; 
    $query = $this->db->query($sSQL); 
    return $query->result_array(); 
} 

UPDATE

你的最新版本仍然不收集遞歸調用數據,這裏是全功能的,看看它是否工作:

function list_link($fatherid=0){ 
    $r = array(); 
    $sSQL = 'SELECT * FROM categories WHERE fatherid = ' . $fatherid . ' AND siteid = ' . MY_SITEID_DEFAULT . ' ORDER BY name'; 
    $query = $this->db->query($sSQL); 
    $result = $query->result_array(); 
    // stock results in array 
    $r[$fatherid] = $result; 
    foreach ($result as $row) { 
     // let's find the children 
     $r[$fatherid][$row['id']] = $this->list_link($row['id']); 
    } 
    return $r; 
} 

請注意,我已經添加了$r[$fatherid][$row['id']],因此最終結果應該是具有分支結構的數組。如果你不想那麼做,只需做$r[]

+0

Thx回答,我必須循環找到孩子。這就是爲什麼我使用遞歸。但是,隨着新的測試,我只注意到我得到了所有lvl 1個孩子。就好像遞歸不是很好,或者「r」沒有任何理由。也許我不使用數組以良好的方式? – Steph68 2014-10-19 18:42:33

+0

嗯,即使你這樣做,就像我在回答的第一行代碼中展示給你的那樣?嘗試'var_dump'結果,看看發生了什麼。 – Shomz 2014-10-19 18:56:39

+0

我嘗試了但沒有成功... – Steph68 2014-10-19 19:41:06