mysql中的父子关系

mysql中的父子关系

我有一个如下表格,需要显示为父和子格式

--------------------------------------------------------
    id   role_name   role_id   parent_id
--------------------------------------------------------
    1     NSM           1        0
    2     MR            5        2
    3     ASM           4        3
    4     ZSM           3        4
    5     RSM           2        1
---------------------------------------------------------

结果如下
NSM
  ---RSM
     -----ZSM
          -----NSM
               -----MR

NSM->ROOT
 RSM->FIRST CHILD
  ZSM->SECOND CHILD
   NSM->THIRD CHILD
    MR->LEAF

最佳答案

// Fetch all the roles
$result = mysql_query("select * from roles");
$roles = array();
while( $role = mysql_fetch_assoc($result) ) {
    $roles[] = $role;
}

// Function that builds a tree
function build_tree($roles, $parent_id=0) {
    $tree = array();
    foreach ($roles as $role) {
        if ($role['parent_id'] == $parent_id) {
            $tree[] = array(
                'role' => $role,
                'children' => build_tree($roles, $role['parent_id'])
            );
        }
    }

    return $tree;
}

// Function that walks and outputs the tree
function print_tree($tree) {
    if (count($tree) > 0) {
        print("<ul>");
        foreach($node in $tree) {
            print("<li>");
            htmlspecialchars($node['role']['role_name']);
            print_tree($node['children']);
            print("</li>");
        }
        print("</ul>");
    }
}

关于php - mysql中的父子关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8341344/

10-09 08:25