0
我无法将我的mysql表转换为json。 我有一个表,显示雇员那样的层次结构:将层次结构提取为json
该表是一个员工表 ID,名字,姓氏,PARENTID
所以现在我想通过数据抽取成查询一个多层次的json对象来模拟显示雇员与他们的主管。
我希望有人能帮助我。
我无法将我的mysql表转换为json。 我有一个表,显示雇员那样的层次结构:将层次结构提取为json
该表是一个员工表 ID,名字,姓氏,PARENTID
所以现在我想通过数据抽取成查询一个多层次的json对象来模拟显示雇员与他们的主管。
我希望有人能帮助我。
假设您已经从数据库获取数据,下面的解决方案将为您提供所需的信息。
要走的道路是通过递归。
<?php
function buildTree(array &$elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parentid'] == $parentId) {
// recursion:
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($elements[$element['id']]);
}
}
return $branch;
}
$rows = [
['id' => 1, 'firstname' => 'john1', 'lastname' => 'doe', 'parentid' => 0],
['id' => 2, 'firstname' => 'john2', 'lastname' => 'doe', 'parentid' => 1],
['id' => 3, 'firstname' => 'john3', 'lastname' => 'doe', 'parentid' => 1],
['id' => 4, 'firstname' => 'john4', 'lastname' => 'doe', 'parentid' => 0],
['id' => 5, 'firstname' => 'john5', 'lastname' => 'doe', 'parentid' => 3],
];
print_r(buildTree($rows));
和结果数组:
Array
(
[1] => Array
(
[id] => 1
[firstname] => john1
[lastname] => doe
[parentid] => 0
[children] => Array
(
[2] => Array
(
[id] => 2
[firstname] => john2
[lastname] => doe
[parentid] => 1
)
[3] => Array
(
[id] => 3
[firstname] => john3
[lastname] => doe
[parentid] => 1
[children] => Array
(
[5] => Array
(
[id] => 5
[firstname] => john5
[lastname] => doe
[parentid] => 3
)
)
)
)
)
[4] => Array
(
[id] => 4
[firstname] => john4
[lastname] => doe
[parentid] => 0
)
)
你json_encode
结果后,you will get:
{
"1": {
"id": 1,
"firstname": "john1",
"lastname": "doe",
"parentid": 0,
"children": {
"2": {
"id": 2,
"firstname": "john2",
"lastname": "doe",
"parentid": 1
},
"3": {
"id": 3,
"firstname": "john3",
"lastname": "doe",
"parentid": 1,
"children": {
"5": {
"id": 5,
"firstname": "john5",
"lastname": "doe",
"parentid": 3
}
}
}
}
},
"4": {
"id": 4,
"firstname": "john4",
"lastname": "doe",
"parentid": 0
}
}
哦,谢谢。这正是我一直在寻找的。稍后当我回家时我会尝试。 – BeatzCraft
你要求至少3个问题中的一个。 1.是否通过MySQL获取数据并使用php工作2.如何遍历结果3.如何将php数组/对象转换为json('json_encode()'btw。)。请澄清你的需求,告诉我们你到目前为止所尝试过的。 –
所以我没有任何麻烦,使用json_encode或做简单或联合MySQL查询。所以从技术方面来说,我对所有需要做的动作有基本的了解。 问题是,我想不出一种方式来通过数据查询,以便我得到多维数组,然后我可以转换成json – BeatzCraft