0

对于我的树类别,我使用下面的代码,但似乎有问题,因为它只返回第一行的值:

<?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); 
?>

任何想法我做错了什么以及如何解决这个问题?

4

2 回答 2

2

我看到你没有对你的递归函数调用 return 做任何事情。具体来说,我认为您的意思是将这些结果也添加到$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变量以防止通知。

于 2013-11-11T13:25:22.403 回答
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); 
于 2013-11-11T13:26:43.947 回答