function test1(){
$sum=up_level33(432, 0, 2);
//dump("完结:".$sum);
}function up_level33($user_id,$sum,$uptype){
$userid="";
dump("要升级的用户所推荐的人:".$user_id);
$user_id=rtrim($user_id,",");
$user_id=explode(",", $user_id);
foreach($user_id as $key=>$val){
$mytj=M("guanli_yeji")->where("tj_user_id=$val")->select();
foreach($mytj as $k=>$v){
$userlevel=get_guanli_level($v[user_id]);
if($userlevel>=$uptype){
$sum++;
}else{
$userid.=$v[user_id].",";
}
}
}
if($userid){
dump("排队与自己等级相同的人的一条线后:".$userid);
dump("人数:".$sum);
up_level33($userid, $sum, $uptype);
}
dump("与自己相同等级的人数:".$sum);
return $sum;
}输入结果:
string(39) "要升级的用户所推荐的人:432"
string(59) "排队与自己等级相同的人的一条线后:433,434,"
string(10) "人数:0"
string(44) "要升级的用户所推荐的人:433,434,"
string(34) "与自己相同等级的人数:2"
string(34) "与自己相同等级的人数:0"
问题:
1、为什么 dump("与自己相同等级的人数:".$sum);这一句会执行到两次。
2、程序本来是应该返回:2     可最后得到的结果是:0
在线坐等大神帮我看一下。谢谢!

解决方案 »

  1.   

    up_level33 这个方法走了两次,所以要输出两个,
      

  2.   

    string(39) "要升级的用户所推荐的人:432"
    string(59) "排队与自己等级相同的人的一条线后:433,434,"
    string(10) "人数:0"
    string(44) "要升级的用户所推荐的人:433,434,"
    string(34) "与自己相同等级的人数:2"

    string(34) "与自己相同等级的人数:0"正常颜色部分是test()方法调用up_level33()时的输出
    红色粗体部分是up_level33()递归调用自身时的输出