php递归,函数不返回任何值

时间:2012-12-09 15:16:32

标签: php recursion return

我希望我的函数返回整个url,从具有给定id的节点开始,并为父项进行serching,最后一个具有parent_id = 1。 我的功能几乎可以工作,回显“$ wholeUrl”;我有我的网址,但功能没有重新调整,我不知道wtf,请帮忙。

这是我的代码

function getUrl($ xml,$ id){

$wholeUrl="";
$wholeUrl= getMyUrl($xml,$id,$wholeUrl);
return $wholeUrl;

}

function getMyUrl($ xml,$ idWew,$ wholeUrl){

foreach($xml as $node) {
    $par = $node->parent_id;
    $ide = $node->id;
    $url = $node->url;
    $name = $node->name;
    settype($par,'integer');
    settype($ide,'integer');

    if($ide==$idWew){

        $wholeUrl=$url."/".$wholeUrl;

        if($par==1){
            echo"$wholeUrl ";
            return $wholeUrl;
            break;
        }else{

            getMyUrl($xml,$par,$wholeUrl);
        }
    }

}
}


print_r(getUrl($xmlcat,1877));

$ xmlcat 是具有以下结构的平面数组:

SimpleXMLElement Object ( [id] => 1876 [parent_id] => 1 [name] => blablabla, bla, bla [url] => bla-bla-bla-bla ) 

2 个答案:

答案 0 :(得分:5)

您需要返回getMyUrl:

    /* .... */
    }else{

        return getMyUrl($xml,$par,$wholeUrl);
    }
    /* .... */

答案 1 :(得分:1)

您也必须return getMyUrl($xml,$par,$wholeUrl);。 否则外部getMyUrl继续foreach循环并搜索下一个节点。