Php 从树构建多维数组

Php 从树构建多维数组,php,json,multidimensional-array,jstree,Php,Json,Multidimensional Array,Jstree,我有一些MySQL数据库上的数据,表示一个树结构,我想把它转换成JSON。我使用了递归函数来读取所有数据,但我不知道如何转换为数组 下面是递归函数: public function buildTree($parent, $level) { // retrieve all children of $parent $results = Department::all()->where('parent_id',$parent); // display each chil

我有一些MySQL数据库上的数据,表示一个树结构,我想把它转换成JSON。我使用了递归函数来读取所有数据,但我不知道如何转换为数组

下面是递归函数:

public function buildTree($parent, $level) {

    // retrieve all children of $parent
    $results = Department::all()->where('parent_id',$parent);
    // display each child

    foreach($results as $result)
    {

        echo $this->buildTree($result['id'], $level+1);
    }

}
下面是我最后想要的JSON结果:

[  
    {  
        "id":1,
        "text":"Root node",
        "children":[  
            {  
                "id":2,
                "text":"Child node 1",
                "children":[  
                    {  
                        "id":4,
                        "text":"hello world",
                        "children":[{"id":5,"text":"hello world2"}]
                    }
                ]
            },
            {  
                "id":3,
                "text":"Child node 2"
            }
        ]
    }
]

现在,我可以用您建议的代码以json格式显示数据。非常感谢你!很高兴它帮助了你!如果这解决了问题,您应该将答案标记为“已接受”:
public function buildTree($parent, $level) {
    // The array which will be converted to JSON at the end.
    $json_return = array();

    // Get the current element's data.
    $results = Department::all()->where('id',$parent);
    $json_return['id'] = $parent;
    $json_return['text'] = $results[0]['text']; // Or however you access the "text" parameter of the end JSON from the database.

    // Retrieve all children of $parent
    $results = Department::all()->where('parent_id',$parent);

    if (count($results) > 0)
    {
        $json_return['children'] = array();
        foreach($results as $result)
        {
            $json_return['children'][] = $this->buildTree($result['id'], $level+1);
        }
    }
    // Going to assume that $level by default is 0
    if ($level == 0)
    {
        echo json_encode(array($json_return));
    }
    return $json_return;
}