对于我的树类我使用下面的代码,但似乎有问题,因为它只返回第1行的值:
<?php
function display_children($parent, $level) {
$result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'");
while ($row = mysql_fetch_array($result)) {
$title = $row['title'];
$id = $row['id'];
$results .= str_repeat('-> ',$level).$title;
display_children($id, $level+1);
}
return $results;
}
display_children(0,0);
?>
任何想法我做错了什么以及如何解决这个问题?
答案 0 :(得分:2)
我看到你没有做任何关于你的递归函数调用返回的事情。具体来说,我认为你的意思是也要将这些结果添加到$results
变量......
试试这个:
<?php
function display_children($parent, $level) {
$result = mysql_query("SELECT * FROM `category` WHERE `parent`='$parent'");
$results = '';
while ($row = mysql_fetch_array($result)) {
$title = $row['title'];
$id = $row['id'];
$results .= str_repeat('-> ',$level).$title;
$results .= display_children($id, $level+1);
}
return $results;
}
echo display_children(0,0);
?>
此外,我宣布$results
变量以防止通知。
答案 1 :(得分:2)
您的功能结果丢失了。 替换:
$results .= str_repeat('-> ',$level).$title;
display_children($id, $level+1);
要:
$results .= str_repeat('-> ',$level).$title."\n".display_children($id, $level+1);
最后还显示结果:
echo display_children(0,0);