递归php函数不返回结果

时间:2011-02-10 21:16:30

标签: php function nested-loops

这是我的功能:

function loop($id){

        unset($result, $sql, $query);
        $sql = " SELECT parent_id FROM page_entries WHERE id = '$id' ";
        $query = mysql_query ( $sql )or die(mysql_error());
        $result = mysql_fetch_assoc ( $query )or die(mysql_error());
        if ( $result['parent_id'] != 0 ) {
            echo $result['parent_id']."... looping<br>";
            loop($result['parent_id']);
        } else {
            echo $result['parent_id']."... done loop";
            return $result['parent_id'];
        }

    } 

    echo loop('2');

我正在回复parent_id进行测试。这是输出到浏览器的内容:

  

1 ...循环

     

0 ...完成循环

我不确定发生了什么,如果我在功能中注释掉echo loop('2')行,return $result['id']不会回复echo中的任何内容。我已经尝试通过将返回值更改为return 'foo';进行测试,但仍然没有。

有什么想法吗?

1 个答案:

答案 0 :(得分:10)

乍一看,我想

loop($result['parent_id']);

应该是

return loop($result['parent_id']);

否则你的if分支什么也没有返回。