2013-05-09 37 views
1

你好,我有一個未定義的偏移量0。在這段代碼中。未定義偏移量0,我如何設置此數組

$q = mysql_query("SELECT * FROM category"); 
if (false === $q) { 
    echo mysql_error(); 
} 

while ($r = mysql_fetch_row($q)) { 
    $names[$r[0]] = $r[2]; 
    $children[$r[0]][] = $r[1]; 
} 

function render_select($root=0, $level=-1) { 
    global $names, $children; 
    if ($root != 0) 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    render_select($child, $level+1); 
} 

echo '<select>'; 
render_select(); 
echo '</select>'; 

確切行,其中的錯誤是:

foreach ($children[$root] as $child) 
    render_select($child, $level+1); 

這是一棵樹格式的選擇框,我發現這個代碼在這個問題上

More efficient hierarchy system

回答

1

有你的代碼在這裏有些不明確:

if ($root != 0) 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    render_select($child, $level+1); 

如果您正試圖執行這些三線只有$root != 0,你將需要添加花括號是這樣的:

if ($root != 0) 
{ 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    { 
     render_select($child, $level+1); 
    } 
} 

否則,隨時render_select被稱爲不帶參數(或與第一參數值'0'),您將嘗試訪問數組鍵'0'處的$ children元素。正如你的錯誤表明的那樣,$ children在這個鍵上不包含一個值。

+0

非常感謝,確實這是一個很大的錯誤,無論如何,錯誤消失,但我的選擇框是空的:(.. snif – 2013-05-09 20:13:50

+0

@DreaminMediaQueretaro只要$ root = 0它將保持空,因爲創建'

+0

好吧,我試着用$ root = 1來做測試,我無法獲得循環工作只是得到id = 1的類別,所以我想我從哪裏複製代碼的答案...請求者更多的定製他說什麼,無論如何,它超出我最近的學習,有一個簡單,更容易,也許更大(寫更多)....可以理解(簡單)的代碼來爲(id,parent_id,name)estructure建立一個選擇框樹。謝謝 – 2013-05-09 20:24:36