рекурсия php, функция не возвращает никакого значения

Я хочу, чтобы моя функция возвращала полный URL-адрес, начиная с узла с заданным идентификатором и выполняя поиск родителей, последний из которых имеет parent_id = 1. Моя функция почти работает, в echo"$wholeUrl "; у меня есть мой URL, но функция не настраивает его, и я не знаю, что делать, пожалуйста, помогите.

вот мой код:

функция getUrl($xml,$id){

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

}

функция 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 ) 

person xianoss    schedule 09.12.2012    source источник


Ответы (2)


Вам нужно вернуть getMyUrl:

    /* .... */
    }else{

        return getMyUrl($xml,$par,$wholeUrl);
    }
    /* .... */
person Pharaoh    schedule 09.12.2012

Вы также должны return getMyUrl($xml,$par,$wholeUrl);. В противном случае внешний getMyUrl продолжает цикл foreach и ищет следующий узел.

person Olaf Dietsche    schedule 09.12.2012