Php 从树构建多维数组
我有一些MySQL数据库上的数据,表示一个树结构,我想把它转换成JSON。我使用了递归函数来读取所有数据,但我不知道如何转换为数组 下面是递归函数: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
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;
}