来自数据库Foreach的多级数组结果

我用这样的数据创建了一个php和mysql数据库

======================================
| id | username  | ref_id |
| 1  | user1    | 0 |
| 2  | user2    | 1 |
| 3  | user3    | 1 |
| 4  | user4    | 2 |
| 5  | user5    | 3 |
| 6  | user6    | 4 |
| 7  | user7    | 5 |
=====================================

我想显示每个用户在其ref\u id下的多级引用。

结果应该是这样的

Array
(
    [level_1] => Array
        (
            [level] => 1
            [users] => Array
                (
                    [2] => Array
                        (
                            [id] => 2
                            [username] => user2
                            [ref_id] => 1
                        )

                    [3] => Array
                        (
                            [id] => 3
                            [username] => user3
                            [ref_id] => 1
                        )

                )

        )

    [level_2] => Array
        (
            [level] => 2
            [users] => Array
                (
                    [4] => Array
                        (
                            [id] => 4
                            [username] => user4
                            [ref_id] => 2
                        )

                    [5] => Array
                        (
                            [id] => 5
                            [username] => user5
                            [ref_id] => 3
                        )

                )

        )

    [level_3] => Array
        (
            [level] => 3
            [users] => Array
                (
                    [6] => Array
                        (
                            [id] => 6
                            [username] => user6
                            [ref_id] => 4
                        )

                    [7] => Array
                        (
                            [id] => 7
                            [username] => user7
                            [ref_id] => 5
                        )

                )

        )

)

好的,这是我试过的,但是级别3重复的像级别2

$stmt = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE id = :uid");
$stmt->bindValue(':uid', $userid);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$refdetails = $stmt->fetchAll();

function getRefs($parent_id = 1, $deep) {
    global $conn;
    $stmt = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
    $stmt->bindValue(':uid', $parent_id);  
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()){
        $ref_user[$row['id']]=array(
            "id"=>$row['id'],
            "username"=>$row['username'],
            "ref_id"=>$row['ref_id']
        );
    }

    $level = 1;
    $arr_refs = $arr_user = array();
    for ($i=1; $i <= $deep ; $i++) { 
        if($i==1){
            $arr_refs['level_'.$level] = array(
                "level"=>$level,
                "users"=>$ref_user
            ); 
        }else{
            foreach ($ref_user as $arr){
                $arr_id = $arr['id'];
                $stmts = $conn->prepare("SELECT DISTINCT id,username,ref_id FROM users WHERE ref_id = :uid");
                $stmts->bindValue(':uid', $arr_id);
                $stmts->execute();
                $stmts->setFetchMode(PDO::FETCH_ASSOC);
                while ($row = $stmts->fetch()){
                    $arr_user[$row['id']]=$row;
                }
            }
            $arr_refs['level_'.$level] = array(
                "level"=>$level,
                "users"=>$arr_user
            ); 
        }
       $level++;
    }
    return $arr_refs;
}

像这样调用这个函数

echo '<pre>';
print_r(getRefs('1','3'));
echo '</pre>';

级别3的结果不是真的,因为它是从级别2重复的

[level_3] => Array
        (
            [level] => 3
            [users] => Array
                (
                    [2] => Array
                        (
                            [id] => 4
                            [username] => user4
                            [ref_id] => 2
                        )

                    [3] => Array
                        (
                            [id] => 5
                            [username] => user5
                            [ref_id] => 3
                        )

                    [4] => Array
                        (
                            [id] => 4
                            [username] => user4
                            [ref_id] => 2
                        )

                    [5] => Array
                        (
                            [id] => 5
                            [username] => user5
                            [ref_id] => 3
                        )

                )

        )

有人能帮我吗?