1

以下の関数をクラス内に配置します

この関数内で再度呼び出しを試みます (この関数内で再帰呼び出しを行いました$this->buildMenu($this->itemId, $menuData);)

この関数は、再帰呼び出しがない場合にのみ機能し、それ以外の場合は値を返しません。

// menu builder function, parent_id 0 is the root 
function buildMenu($parent_id, $menuData)
{       
    $this->html = ''; 
    if (isset($menuData['parents'][$parent_id])) 
    { 
        if($parent_id=='0') $this->html = '<ul class="menu responsive-menu sf-js-enabled">';
        else $this->html = '<ul>';
        foreach ($menuData['parents'][$parent_id] as $this->itemId) 
        { 
            if($this->itemId=='1'){$this->html .= '<li><a href="'.PATH.'">' . $menuData['items'][$this->itemId]['menu_name'].'</a>';}
            else $this->html .= '<li class=""><a href="?action='. md5($menuData['items'][$this->itemId]['menu_link']).'">' . $menuData['items'][$this->itemId]['menu_name'].'</a>';
            $this->html .= $this->buildMenu($this->itemId, $menuData); 
            $this->html .= '</li>'; 
        } 
        $this->html .= '</ul>'; 
    } 

    return $this->html;
}
4

2 に答える 2

1

に問題がある可能性があります$this->html = '';
クラス変数のように見える$htmlので、関数を再帰的に呼び出すたびに、空の文字列に初期化します。
ローカル関数変数として使用してみてください。

于 2012-11-22T18:15:38.393 に答える
0

まず、次のように置き換えます。再帰の際に空の文字列で値を調整していますが、これは意図したものではありません$this->html$html

于 2012-11-22T18:15:06.467 に答える