function count_this_bl($uid,$k,$rand_num)
{
global $_SGLOBAL;
    static $rand = 0;
    static $num3 = 0;    
    
    if($rand != $rand_num)
    {   
        $num3 = 0;
        $rand = $rand_num;        
    }
    
static $i = 0;  //我定义static 的目的是让它 循环 $k次后,就停止了, $k 是层次。
    for($i = 0;$i < $k;$i++) // $k 层次
    {
$result = $_SGLOBAL['db']->fetch_one('select level1,level2,level3 from uc_level where uid='.$uid);
        if($result)
        {   
            for($y = 0;$y < 3;$y++) //判断 L1,L2,L3 是否为空
     {
     if($result[$y])  //继续 L -> $y 下层
     {  
                    $num3++;
     count_this_bl($result[$y],$k,$rand);                
     }
     }
        }   
    }
        
    return $num3;
}函数参数:   $uid 父级uid,  $k 每层最多次数, $rand_num随机数,防止多次调用时存在静态变量.问题描述:  现在调用 count_this_bl(1308534381,2,mt_rand()); $k=2, 限制不了 2 层, 它还是会继续往下调用函数。.
数据表图:这个问题困扰我两天了. 头痛.   有爱好的研究的请加我QQ 100-9798-715.

解决方案 »

  1.   

    你至少需要
    count_this_bl($result[$y],$k-1,$rand);                
      

  2.   

    1990啥也不说了.  牛人就是牛人.    搞定了。 O(∩_∩)O谢谢。
    修正:
    static $i;  //我定义static 的目的是让它 循环 $k次后,就停止了, $k 是层次。
        for($i = ;$i < $k;$i++) // $k 层次
      

  3.   


    修正:
    static $i; //我定义static 的目的是让它 循环 $k次后,就停止了, $k 是层次。
      for($i = 0;$i < $k;$i++)....count_this_bl($result[$y],$k-1,$rand);