你的递归用法错误啦,
  if ($typeida==0) {
     
      echo "执行返回$typename.$typeida";
      $typedir=explode('/',$typedir);
      $url_c=" <a target='_blank' href=\"/".$typedir[1]."/".$typedir[2]."/".$dfname."\">".$typename." </a>";
     
      echo $url_c; 
     
      return $url_c; 
  }
  else  {
      muses($typeida);   
     
  } 
$typeida不为0的时候你的函数就不会有返回值了,这样改一下
  if ($typeida==0) {
     
      echo "执行返回$typename.$typeida";
      $typedir=explode('/',$typedir);
      $url_c=" <a target='_blank' href=\"/".$typedir[1]."/".$typedir[2]."/".$dfname."\">".$typename." </a>";
  }
  else  {
      $url_c = muses($typeida);   
  } 
  return $url_c; 

解决方案 »

  1.   

    $data['typeida'] = $reid_tmp['reid'];
    $data['typename'] = $reid_tmp['typename'];
    $data['typedir'] = $reid_tmp['typedir'];
    $data['dfname'] = $reid_tmp['defaultname'];
    while里面改成上面这样,然后在while 之后if 之前输出var_dump($data)看看.你这是函数的递归调用吗?
      

  2.   


    看我的结果,那个$typeida最后肯定是为0了..也没有返回值,To:HOOLOO 我是做递归....
    我的返回结果已经显示,执行到==0的条件.为什么还是没有返回值..To:rzhome 这个我也试过了,一样没有返回值.
      

  3.   

    array(4) { ["typeida"]=> string(2) "16" ["typename"]=> string(12) "重孙目录" ["typedir"]=> string(28) "{cmspath}/html/jianxiashijie" ["dfname"]=> string(10) "index.html" }用HOOLOO的方法,返回上面的结果..不明白了.....
      

  4.   

    ...
    else  { 
          muses($typeida);    <=== 这里没人接受返回值
          
      } 
      
      

  5.   

    就算这里加上一个return 也是一样的结果..因为我觉得他没有是0的会递归,是0的话就直接应对0的条件了..不会去执行非0的条件...