我想输出我的数据库记录
UserName Placement Position
Jimmy left
JLO Jimmy left
Shinobi JLO left
trialuser4 JLO right
donald_duck trialuser4 left
minnie_mouse donald_duck left
mickeymouse donald_duck right
dr_octopus mickeymouse left
dr_cucumber dr_octopus left
mr_brown111 dr_octopus right
如果我的树以JLO开头,我想像
那样输出它JLO
Shinobi
trialuser4
donald_duck
minnie_mouse
mickeymouse
dr_octopus
dr_cucumber
mr_brown111
但是使用mysql和php,如何绘制记录并输出它就像我的jsFiddle html代码一样。
感谢您帮助&启发!
答案 0 :(得分:0)
我们可以首先构建一个表示层次结构的嵌套数组。然后递归打印出列表标签:
$rows = array(
array('UserName' => 'Jimmy', 'Placement' => '', 'Position' => 'left'),
array('UserName' => 'JLO', 'Placement' => 'Jimmy', 'Position' => 'left'),
array('UserName' => 'Shinobi', 'Placement' => 'JLO', 'Position' => 'left'),
array('UserName' => 'trialuser4', 'Placement' => 'JLO', 'Position' => 'right'),
array('UserName' => 'donald_duck', 'Placement' => 'trialuser4', 'Position' => 'left'),
array('UserName' => 'minnie_mouse', 'Placement' => 'donald_duck', 'Position' => 'left'),
array('UserName' => 'mickeymouse', 'Placement' => 'donald_duck', 'Position' => 'right'),
array('UserName' => 'dr_octopus', 'Placement' => 'mickeymouse', 'Position' => 'left'),
array('UserName' => 'dr_cucumber', 'Placement' => 'dr_octopus', 'Position' => 'left'),
array('UserName' => 'mr_brown111', 'Placement' => 'dr_octopus', 'Position' => 'right'),
);
$nested_lists = array();
$user_lists = array();
foreach ($rows as $row) {
$placement = $row['Placement'];
$user = $row['UserName'];
if ($placement == '') {
$nested_lists[$user] = array();
$user_lists[$user] = &$nested_lists[$user];
} else {
$pointer = &$user_lists[$placement];
$pointer[$user] = array();
$user_lists[$user] = &$pointer[$user];
}
}
function build_list($arr)
{
if (count($arr) == 0) {
return '';
}
$html = "<ul>";
foreach ($arr as $k => $v) {
$html .= "<li>$k" . build_list($v) . "</li>";
}
$html .= "</ul>";
return $html;
}
echo build_list($nested_lists['Jimmy']);
打印