-2

I want my function to return whole url, starting from node with given id, and serching for parents, last one has parent_id =1. My function almost works, in echo"$wholeUrl "; i have my url, but function doesn't retun it and I don't know wtf, please help.

Here's my code:

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 is flat array with this structure:

SimpleXMLElement Object
(
    [id] => 1876
    [parent_id] => 1
    [name] => blablabla, bla, bla
    [url] => bla-bla-bla-bla
) 
user3840170
  • 26,597
  • 4
  • 30
  • 62
xianoss
  • 149
  • 1
  • 10

2 Answers2

5

You need to return getMyUrl:

    /* .... */
    }else{

        return getMyUrl($xml,$par,$wholeUrl);
    }
    /* .... */
Imanuel
  • 3,596
  • 4
  • 24
  • 46
1

You must return getMyUrl($xml,$par,$wholeUrl); as well. Otherwise the outer getMyUrl continues in the foreach loop and searches the next node.

Olaf Dietsche
  • 72,253
  • 8
  • 102
  • 198