繁体   English   中英

动态多级菜单php的递归函数

[英]recursive function for dynamic multilevel menu php

我有一个像这样的mysql表结构:

CREATE TABLE IF NOT EXISTS menu(
id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_id INT(5), -- parent id
sort_id INT(5) NOT NULL, -- for position
title VARCHAR(50) NOT NULL,
etc ...);

数据结构如下所示:

id | p_id | sort_id | title 
1  | NULL |    1    |  root_1
2  |  1   |    1    |  sub1 of root_1
3  |  1   |    2    |  sub2 of root_1
4  | NULL |    2    |  root_2
5  |  2   |    1    |  sub1 of root_2
6  |  2   |    2    |  sub2 of root_2
7  |  3   |    1    |  sub1 of `sub2 of root_1`

我已经创建了一个php脚本来显示一个级别的子菜单,但是我无法决定如何获得其他级别。 我认为需要递归函数,例如,才能在此任务中获取sub1 of sub2 of root_1元素sub1 of sub2 of root_1

如果有人对在这种情况下如何开始创建递归函数有任何想法,请告诉我,谢谢:)

最好首先将其转换为树型结构:

Menu Top
  |
Nodes with NULL p_id
  |
Children

您可以通过创建包含子项数组的MenuNode类来实现此目的。 您不必那样做,但是它将使创建递归函数输出菜单变得更加容易。

函数generate_menu_list($ parent_id){$ result = mysql_query(“ SELECT * FROM menu WHERE p_id ='$ parent_id'by sort_id”); if(结果){而($ row = mysql_fetch_array($ result)){
$ count = mysql_query(“ SELECT count(0)as cnt FROM menu_master WHERE parent_id ='”。$ row ['id']。“'”); $ countrow = mysql_fetch_array($ count);

    echo '<li><a href="'$linktoredirect.'"><span class="fa fa-user"></span>'.$row['title '].'</a> ';

     if($countrow['cnt']>0)
     {
        echo '<ul>'; 
        $this->generate_menu_list($row['id']);  
        echo '</ul>';
     }  
     echo '</li>';
  } 
}   

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM