2011-11-22 79 views
1

該函數的輸出看起來不錯,但我每次都會從無處獲取額外的[0] => Array ([1] => 1)。 ID在我的數據庫表中從1開始。 0從哪裏出現?!函數輸出從零開始的數組0元素

Array ([1] => Array ([name] => Sual [parent] => 0) **[0] => Array ([1] => 1)** ...

下面是函數

​​

回答

1

我想象當你遇到從表中的頂級行(行沒有父)問題就來了。當你處理這些行之一,$parent爲null並且此條件火災:

if (!array_key_exists($parent,$tree)) { 
    $tree[$parent][$id] = $id; 
} 

這裏$parent爲空,這被解釋爲0,這是不是在$parent存在(至少一個關鍵,而不是你第一次遇到這樣的一排),所以這導致$tree[0]被創建。在你的情況下,parent爲空的第一行是id = 1的行,因此$tree[0]array(1 => 1)

更改上述條件爲以下:

if (!array_key_exists($parent,$tree) and !is_null($parent)) { 

,或者如果你的數據庫的包裝不使用PHP null類型來表示SQL NULL值,使用這樣的:

if (!array_key_exists($parent,$tree) and $parent != 0) { 
0

東西出錯了

if (!array_key_exists($parent,$tree)) { 
     $tree[$parent][$id] = $id; 

i thi NK。嘗試評論此代碼,然後打印數組$ tree