2009/12/4 Midhun Girish <midhungirish@xxxxxxxxx>: > 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@xxxxxxxxxxxxxx> > wrote: >> >> 2009/12/4 Midhun Girish <midhungirish@xxxxxxxxx>: >> > 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@xxxxxxxxxxxxxx> >> > wrote: >> >> >> >> 2009/12/4 Midhun Girish <midhungirish@xxxxxxxxx> >> >> > >> >> > 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 -- PHP Windows Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php