2009/12/4 Midhun Girish <[email protected]>
>
> 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
--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php