我没明白你这段程序想干什么,不过你用下面的代码
function sonid($mainid,$i=0)
{
$sql="select id from types where maintypeid=$mainid";
$rs=mysql_query($sql); while($data=mysql_fetch_object($rs))
{
  $result[]=$data->id;
sonid($data->id,1);
}
return $result;
}
试试吧.

解决方案 »

  1.   

    $result应该先声明为global变量,unset($result)才会起作用。function sonid($mainid,$i=0)
    {
    global $result;
    if(!$i)
    unset($result);
    $sql="select id from types where maintypeid=$mainid";
    $rs=mysql_query($sql);
    while($data=mysql_fetch_object($rs))
    {
      $result[]=$data->id;
    sonid($data->id,1);
    }
    return $result;
    }
      

  2.   

    我的意思是只调用一次(一个页面用一次)sonid函数时候没有问题,但是,第二次以上使用的时候$result[]数组没有清空,例如:第一次调用此函数sonid(0)返回的结果是result[0]=0,result[1]=1,result[2]=2,result[3]=3;第二次再调用sonid(0)返回就不是result[0]=0,result[1]=1,result[2]=2,result[3]=3了变成了result[0]=0,result[1]=1,result[2]=2,result[3]=3;result[4]=0,result[5]=1,result[6]=2,result[7]=3;
     其实就是第二次调用时没有先清空result数组
      

  3.   

    if(!$i)
      unset($result);
    global $result;
    改为
    global $result;
    if(!$i)
      unset($result);