我在MySQL表中有数据(称为信息),如下所示:
_______________________ id | text | parent | 1 | a | NULL | 2 | b | 1 | 3 | c | 1 | 4 | d | 2 | -----------------------
(id是自动递增)
我想在PHP中显示这些数据,如下所示:
>a (ID 1) >>b(ID 2) >>>d (ID 4, parent 2) >>c (ID 3)
我尝试了不同的方法,但似乎无法让它们以任何方式工作。我知道我需要一个递归函数,但是我该怎么做呢?一个简单的指针就足够了;感谢。
答案 0 :(得分:0)
当你拿到桌子的时候:
$parents = array();
$children = array();
while($row = ...){
if($row['parent'] == null){
$parents[] = array ('id' => $row['id'], 'text' => $row['text'])
}
else{
if(!isset($children[$row['parent']])) $children[$row['parent']] = array();
$children[$row['parent']][] = array ('id' => $row['id'], 'text' => $row['text'])
}
}
使用此功能迭代:
function displayChildren($array, $id, $char = ">"){
foreach($array as $ch){
if($ch['id'] == $id)
echo "$char {$ch['text']} (ID {$ch['id']})"
}
}