2017-04-13 157 views
-3

我有這樣的表格菜單動態嵌套菜單php

我有問題要顯示像這樣的ul和li標籤像第二張圖片。 請幫我解決

menu_code | desc_code
1 |菜單1
1.1 |菜單1.1
1.2 |菜單1.2
1.2.1 |菜單1.2.1
2 |菜單2
我想用「無限級菜單」的概念顯示我的表格菜單。

+1

那麼你有什麼嘗試?這不是一個代碼編寫網站 –

+1

這裏的大多數人想要格式化文本,而不是圖片。 – jarlh

回答

0

我會考慮改變你的表格結構。你將需要遍歷每個父母和孩子,你不希望這樣做與字符串分割。我建議你創建一個額外的列parent_id並像這樣綁定你的項目。在那之後,它很容易通過它的子節點遞歸爬取來創建ul> li結構。

示例遞歸函數:

public static function buildTree($items, $parent_id = null) { 
    $result = []; 

    foreach($items as $item) { 
     if($item->parent_id == $parent_id) { 
      $children = self::buildTree($items, $item->id); 

      if($children) { 
       $item->children = $children; 
      } 

      $result[$item->id] = $item; 
     } 
    } 

    return $result; 
} 

那之後,你可以使用的生成函數的結果遞歸創建您的菜單結構:因此

public static function treeToHtml($tree, $level = 0) { 
    $result = ''; 

    $result .= '<ul>'; 
    foreach($tree as $item) { 
     $has_children = isset($item->children) && count($item->children) > 0; 

     if($has_children) { 
      $result .= '<li><a href="#">'; 
      $result .= self::treeToHtml($item->children, $level + 1); 
      $result .= '</li>'; 
     } else { 
      $result .= '<li><a href="#"></li>'; 
     } 
    } 

    $result .= '</ul>'; 

    return $result; 
} 

編輯功能和靜態都取決於上下文你正在使用它。

+0

感謝Niek Van der Maaden ...你的邏輯非常有用:) –