如何编写函数来获得树结构化输出

Jui*_*ice 9 php mysql recursion function

在此输入图像描述

我有一张叫做的桌子login.在这里我有3列id,名称和参考.人们可以在网站上注册另一个人.Adminno reference这样的裁判值0.A & c来自管理员,所以他们的ref值是1.B,D and G谈到under A所以他们的参考价值2.E and Funder B一个人可以参考最多3人..我需要在这样的表格中输出

在此输入图像描述

Man*_*ala 3

使用此代码获得所需的输出

<?php 
$connection = mysqli_connect('localhost', 'root', '', 'db_mani'); //connection

$sql = "SELECT * FROM users";
$result = mysqli_query($connection, $sql);
$usersArray = array();
if(mysqli_num_rows($result) > 0){
    while($row = mysqli_fetch_assoc($result)) {
        $usersArray[]= $row; ///will create array of users
    }
}           

function makeMenu($items, $parentId) //will create array in tree structure
{
    $menu = array_filter($items, function ($item) use ($parentId) {
        return     $item['ref'] == $parentId;
    });
    foreach ($menu as &$item) 
    {
        $subItems = makeMenu($items, $item['id']);
        if (!empty($subItems)) 
        {
            $item['child'] = $subItems;
        }
    }
    return $menu;
}

function print_users($usersArray,$ref = 'Admin')
{   
    $str ='<table border="1" width ="300" style="text-align:center;"><tr>';
    foreach($usersArray as $user)
    { 
        $str.='<td>'.$user['name'].' (Ref:'.$ref.')';
        if(!empty($user['child']))
        {
            $str.= print_users($user['child'],$user['name']);
        }
        $str.='</td>';
    }
    $str.='</tr></table>';
    return $str;      
}


$usersArray = makeMenu($usersArray,0); ///call with parent id 0 for first time, this will give usres in tree structure
echo print_users($usersArray); // print users
?>
Run Code Online (Sandbox Code Playgroud)

最后结果 :

在此输入图像描述

数据库结构:

在此输入图像描述

我希望这能解决您的问题。谢谢。