这个是已有的函数:function checkad($sortsid)
  {
      global $db,$table_sorts;
      //查询设备信息
  $sql = "select supsortid from $table_sorts where sortid=$sortsid";
  
  $query = $db->query($sql);
  $supsortid = $db->result($query,0);
  print "supid=".$supsortid."<br>";
  if($supsortid==0)
  {
     print "sortsid=".$sortsid."<br>";
     $temps = $sortsid;
 return $sortsid;
  }
  elseif($supsortid!=0)
  {
     print "123456 <br/>";
     checkad($supsortid);
 print "456798";
 print "1111111111111111111111"."<br>";
  }
  //return $temps;
  }这个是调用方法的代码:$tempid =  $_GET['sortid'];
  $eqads=checkad($tempid);
  print  "123456=".$eqads;
  if($eqads!='')
  {
      //根据编号查询所有的广告信息
  $sql = "select * from $table_pic where class2=2 and class3=$eqads";
  $query = $db->query($sql);
  while($db_rec = $db->fetch_array($query))
  {
      $allads[] = $db_rec;
  }
  }function 中的 $temps,$sortsid 两个变量都是有值的,但是在接受 时的$eqads却没有接受到值,而且 在递归方法本身调用时,当满足 if 条件的时候 应该返回 值才对啊,但是却执行了 这两句话:print "456798";
print "1111111111111111111111"."<br>";
请各位大虾们帮帮忙 

解决方案 »

  1.   


    if($supsortid==0) {
    }elseif($supsortid!=0) {
    }
    你觉得你上面的逻辑判断对吗?
      

  2.   

    我想问问 $supsortid = $db->result($query,0);  你这是得到什么?
      

  3.   

    我已经得到答案了,谢谢各位,答案如下
    function checkad($sortsid) 
      { 
          global $db,$table_sorts; 
          //查询设备信息 
      $sql = "select supsortid from $table_sorts where sortid=$sortsid"; 
      
      $query = $db->query($sql); 
      $supsortid = $db->result($query,0); 
      if($supsortid==0) 
      { 
        $temps = $sortsid; 
        return $sortsid; 
      } 
      elseif($supsortid!=0) 
      { 
        return checkad($supsortid); 
      } 
      //return $temps; 
      }