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 >