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 -- PHP Windows Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php