我真的希望有人可以帮助我。我现在挣扎了近两天......
我有一个DB表“Device”和一个表“Connection”。我用它来形象化我公司的网络。为了将数据传递给JS框架,我用来可视化我需要这样的数组的数据:
Array
(
[id] => 1
[name] => TestPC1
[children] => Array
(
[0] => Array
(
[id] => 2
[name] => Testhub 2
[data] => Array
(
)
[children] => Array
(
[0] => Array
(
[id] => 3
[name] => Rack3
[data] => Array
(
)
[children] => Array
(
)
)
[1] => Array
(
[id] => 4
[name] => Rack4
[data] => Array
(
)
[children] => Array
(
)
)
)
)
)
)
设备表如下所示:
A | B
-------------------
1 | 2
2 | 3
2 | 4
此示例的可视化如下所示:
http://img34.imageshack.us/img34/4230/netmd.jpg
有没有人有想法,如何从db-data到这个数组?
谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
假设您希望使用该表在PHP中执行此操作,例如,我将使用数组来表示在给定表与我想象的ID之后的JOIN
之后返回的数据库数据>名称映射表:
$links = array(
array('A' => 1, 'AName' => 'TestPC1', 'B' => 2, 'BName' => 'TestHub2'),
array('A' => 2, 'AName' => 'TestHub2', 'B' => 3, 'BName' => 'Rack3'),
array('A' => 2, 'AName' => 'TestHub2', 'B' => 4, 'BName' => 'Rack4')
);
$elements = array();
// Build the tree
foreach ($links as $link) {
if (!isset($elements[$link['A']])) {
$elements[$link['A']] = array(
'id' => $link['A'], 'name' => $link['AName'],
'data' => array(), 'children' => array()
);
}
if (!isset($elements[$link['B']])) {
$elements[$link['B']] = array(
'id' => $link['B'], 'name' => $link['BName'],
'data' => array(), 'children' => array()
);
}
$elements[$link['A']]['children'][$link['B']] = &$elements[$link['B']];
}
// Patch up the indices to start from 0
foreach ($elements as &$element) {
$element['children'] = array_values($element['children']);
}
$elements = array_values($elements);
就个人而言,我不打扰修补索引,如果你不这样做,它会更容易按ID搜索条目。
输入您的父/子数据时要小心,否则您最终会得到一个可爱的循环参考。
您当然需要使用生成数组的合适db命令(mysql_fetch_array等)替换对$links
的引用。