Prev: UNSUBSCRIBE me please
Next: cgi
From: Richard Quadling on 4 Dec 2009 07:45 2009/12/4 Midhun Girish <midhungirish(a)gmail.com>: > hello all, > > hey Richard Quadling you are right... sorry man.. i just noticed that just > now. > > Actually i missed th line self::getAllChildren($child,$levelcount,False); > that you gave and thought it was a mistake...that y i updated the > script...you can imagine the condition of a person who searched over 250 > pages in internet for this.. :)....i haven't updated the pages yet.... thank > you for the heads up.. i will take it as you gave... > > > Midhun Girish > > > > On Fri, Dec 4, 2009 at 5:48 PM, Richard Quadling <rquadling(a)googlemail.com> > wrote: >> >> 2009/12/4 Midhun Girish <midhungirish(a)gmail.com>: >> > Hello , >> > >> > Richard Quadling thank you so much.. your trick worked... :) now its >> > working.. heres the modified code... >> > >> >  public function getAllChildren($node,$level,$firstCall=false) >> >> >> >>  { >> >>    static $rootsarray=array(); >> >>    static $levelcount; >> >>    if($firstCall) { >> >>      $rootsarray=array(); >> >>    } >> >>    $levelcount=$level; >> >>    $child=self::getChild($node); >> >>    if($child==''||$levelcount==0) >> >>    { >> >>      return 1; >> >>    } >> >>    else >> >>    { >> >>      $levelcount--; >> >>      $rootsarray[]=$child; >> >>      self::getAllChildren($child,$levelcount,False); >> >>    } >> >>    return $rootsarray; >> >> >> >>  } >> >> >> > >> > and i call the function like : >> > >> >  $nodearray=tree::getAllChildren('W1',10,true); >> > >> > >> > Thank you so much for your support... >> > >> > Midhun Girish >> > >> > >> > On Fri, Dec 4, 2009 at 3:18 PM, Richard Quadling >> > <rquadling(a)googlemail.com> >> > wrote: >> >> >> >> 2009/12/4 Midhun Girish <midhungirish(a)gmail.com> >> >> > >> >> > Hello guys, >> >> > I was trying to use a recursive function to do a tree traversal.. i >> >> > used >> >> > a >> >> > static array to store the nodes at each recursion.. The function >> >> > works >> >> > correctly if it is called only once during an execution.. but when i >> >> > call it >> >> > twice or more, the nodes get appended to the array...hers the var >> >> > dump >> >> > of >> >> > the array... >> >> > Three:Array ( [0] => W4 ) >> >> > Two:Array ( [0] => W4 [1] => W3 [2] => W4 ) >> >> > One:Array ( [0] => W4 [1] => W3 [2] => W4 [3] => W2 [4] => W3 [5] => >> >> > W4 >> >> > ) >> >> > >> >> > I tried to reset() the array and all but not working..i am not able >> >> > to >> >> > chnage the index of the $rootsarray  back to 0... the new elelnts are >> >> > added >> >> > at the end only...can anyone give me a push in the right direction?? >> >> > Im >> >> > using PHP Version 5.2.9 in XAMPP... Hers the source... >> >> > >> >> >   public function getAllChildren($node,$level) >> >> >   { >> >> >     static $rootsarray=array(); >> >> >     static $levelcount; >> >> >     $levelcount=$level; >> >> >     $child=self::getChild($node); >> >> >     if($child==''||$levelcount==0) >> >> >     { >> >> >       return 1; >> >> >     } >> >> >     else >> >> >     { >> >> >       $levelcount--; >> >> >       $rootsarray[]=$child; >> >> >       self::getAllChildren($child,$levelcount); >> >> >     } >> >> >     return $rootsarray; >> >> > >> >> >   } >> >> > >> >> > Midhun Girish >> >> >> >> Of course. The array is static. So the content is maintained between >> >> calls. >> >> >> >> You need to know when to initialize it. >> >> >> >> Something like ... >> >> >> >>  public function getAllChildren($node,$level,$firstCall=True) >> >>  { >> >>    static $rootsarray=array(); >> >>    static $levelcount; >> >>    if($firstCall) { >> >>      $rootsarray=array(); >> >>    } >> >>    $levelcount=$level; >> >>    $child=self::getChild($node); >> >>    if($child==''||$levelcount==0) >> >>    { >> >>      return 1; >> >>    } >> >>    else >> >>    { >> >>      $levelcount--; >> >>      $rootsarray[]=$child; >> >>      self::getAllChildren($child,$levelcount,False); >> >>    } >> >>    return $rootsarray; >> >> >> >>  } >> >> >> >> >> >> -- >> >> ----- >> >> Richard Quadling >> >> "Standing on the shoulders of some very clever giants!" >> >> EE : http://www.experts-exchange.com/M_248814.html >> >> Zend Certified Engineer : >> >> http://zend.com/zce.php?c=ZEND002498&r=213474731 >> >> ZOPA : http://uk.zopa.com/member/RQuadling >> > >> > >> >> Why did you change the default to False? This now requires _ALL_ calls >> to the method to be amended. >> >> Unless you wanted to preserve the incorrect behaviour... >> >> Hmmm. BC is a PITA. >> >> >> >> -- >> ----- >> Richard Quadling >> "Standing on the shoulders of some very clever giants!" >> EE : http://www.experts-exchange.com/M_248814.html >> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 >> ZOPA : http://uk.zopa.com/member/RQuadling > > You really only needed 1 page ... http://www.php.net/manual/en/language.variables.scope.php#language.variables.scope.static Good luck! -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling |